dspy_rs/adapter/
mod.rs

1pub mod chat;
2
3pub use chat::*;
4
5use crate::{Chat, Example, LM, Message, MetaSignature, Prediction};
6use anyhow::Result;
7use async_trait::async_trait;
8use rig::tool::ToolDyn;
9use serde_json::Value;
10use std::collections::HashMap;
11use std::sync::Arc;
12
13#[async_trait]
14pub trait Adapter: Send + Sync + 'static {
15    fn format(&self, signature: &dyn MetaSignature, inputs: Example) -> Chat;
16    fn parse_response(
17        &self,
18        signature: &dyn MetaSignature,
19        response: Message,
20    ) -> HashMap<String, Value>;
21    async fn call(
22        &self,
23        lm: Arc<LM>,
24        signature: &dyn MetaSignature,
25        inputs: Example,
26        tools: Vec<Arc<dyn ToolDyn>>,
27    ) -> Result<Prediction>;
28}