llm.rs

 1use serde::{Deserialize, Serialize};
 2use strum::{Display, EnumIter, EnumString};
 3
 4pub const EXPIRED_LLM_TOKEN_HEADER_NAME: &str = "x-zed-expired-token";
 5
 6#[derive(
 7    Debug, PartialEq, Eq, Hash, Clone, Copy, Serialize, Deserialize, EnumString, EnumIter, Display,
 8)]
 9#[serde(rename_all = "snake_case")]
10#[strum(serialize_all = "snake_case")]
11pub enum LanguageModelProvider {
12    Anthropic,
13    OpenAi,
14    Google,
15    Zed,
16}
17
18#[derive(Debug, Serialize, Deserialize)]
19pub struct LanguageModel {
20    pub provider: LanguageModelProvider,
21    pub name: String,
22}
23
24#[derive(Debug, Serialize, Deserialize)]
25pub struct ListModelsResponse {
26    pub models: Vec<LanguageModel>,
27}
28
29#[derive(Debug, Serialize, Deserialize)]
30pub struct PerformCompletionParams {
31    pub provider: LanguageModelProvider,
32    pub model: String,
33    pub provider_request: Box<serde_json::value::RawValue>,
34}