use async_trait::async_trait;
use lc_core::runnables::{LcelError, Runnable, RunnableConfig};
use std::sync::Arc;
use crate::pipeline::RAGPipeline;
pub struct RagRunnable {
pipeline: Arc<RAGPipeline>,
}
impl RagRunnable {
pub fn new(pipeline: Arc<RAGPipeline>) -> Self {
Self { pipeline }
}
}
#[async_trait]
impl Runnable<String, String> for RagRunnable {
type Error = LcelError;
async fn invoke(
&self,
input: String,
_config: Option<RunnableConfig>,
) -> Result<String, LcelError> {
self.pipeline
.query(&input)
.await
.map_err(|e| LcelError::Other(format!("RAG query error: {}", e)))
}
}
#[cfg(test)]
mod tests {
#[test]
fn rag_runnable_creation() {
}
}