zerolaunch_plugin_api/services/model/
service.rs1use async_trait::async_trait;
2use tokio::sync::mpsc;
3
4use super::types::{
5 ModelChatRequest, ModelChatResponse, ModelEmbeddingRequest, ModelEmbeddingResponse, ModelError,
6 ModelInfo, ModelSimilarityRequest, ModelSimilarityResponse, ModelStreamChunk,
7};
8
9#[async_trait]
14pub trait ModelService: Send + Sync {
15 fn list_models(&self) -> Vec<ModelInfo>;
17
18 fn model_info(&self, model_id: &str) -> Option<ModelInfo>;
20
21 async fn chat(&self, req: ModelChatRequest) -> Result<ModelChatResponse, ModelError>;
23
24 async fn stream_chat(
26 &self,
27 req: ModelChatRequest,
28 tx: mpsc::Sender<ModelStreamChunk>,
29 ) -> Result<(), ModelError>;
30
31 async fn embedding(
33 &self,
34 req: ModelEmbeddingRequest,
35 ) -> Result<ModelEmbeddingResponse, ModelError>;
36
37 async fn similarity(
39 &self,
40 req: ModelSimilarityRequest,
41 ) -> Result<ModelSimilarityResponse, ModelError>;
42}