1use async_trait::async_trait;
2use serde::{Deserialize, Serialize};
3
4use crate::messaging::AgentMessage;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct LlmRequest {
9 pub system_prompt: String,
10 pub messages: Vec<AgentMessage>,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct LlmResponse {
15 pub message: AgentMessage,
16}
17
18#[async_trait]
19pub trait LanguageModel: Send + Sync {
20 async fn generate(&self, request: LlmRequest) -> anyhow::Result<LlmResponse>;
21}