language_models.rs

 1use std::sync::Arc;
 2
 3use client::{Client, UserStore};
 4use gpui::{App, Context, Entity};
 5use language_model::LanguageModelRegistry;
 6use provider::deepseek::DeepSeekLanguageModelProvider;
 7
 8pub mod provider;
 9mod settings;
10pub mod ui;
11
12use crate::provider::anthropic::AnthropicLanguageModelProvider;
13use crate::provider::bedrock::BedrockLanguageModelProvider;
14use crate::provider::cloud::CloudLanguageModelProvider;
15use crate::provider::copilot_chat::CopilotChatLanguageModelProvider;
16use crate::provider::google::GoogleLanguageModelProvider;
17use crate::provider::lmstudio::LmStudioLanguageModelProvider;
18use crate::provider::mistral::MistralLanguageModelProvider;
19use crate::provider::ollama::OllamaLanguageModelProvider;
20use crate::provider::open_ai::OpenAiLanguageModelProvider;
21use crate::provider::open_router::OpenRouterLanguageModelProvider;
22use crate::provider::vercel::VercelLanguageModelProvider;
23use crate::provider::x_ai::XAiLanguageModelProvider;
24pub use crate::settings::*;
25
26pub fn init(user_store: Entity<UserStore>, client: Arc<Client>, cx: &mut App) {
27    crate::settings::init(cx);
28    let registry = LanguageModelRegistry::global(cx);
29    registry.update(cx, |registry, cx| {
30        register_language_model_providers(registry, user_store, client, cx);
31    });
32}
33
34fn register_language_model_providers(
35    registry: &mut LanguageModelRegistry,
36    user_store: Entity<UserStore>,
37    client: Arc<Client>,
38    cx: &mut Context<LanguageModelRegistry>,
39) {
40    registry.register_provider(
41        CloudLanguageModelProvider::new(user_store.clone(), client.clone(), cx),
42        cx,
43    );
44
45    registry.register_provider(
46        AnthropicLanguageModelProvider::new(client.http_client(), cx),
47        cx,
48    );
49    registry.register_provider(
50        OpenAiLanguageModelProvider::new(client.http_client(), cx),
51        cx,
52    );
53    registry.register_provider(
54        OllamaLanguageModelProvider::new(client.http_client(), cx),
55        cx,
56    );
57    registry.register_provider(
58        LmStudioLanguageModelProvider::new(client.http_client(), cx),
59        cx,
60    );
61    registry.register_provider(
62        DeepSeekLanguageModelProvider::new(client.http_client(), cx),
63        cx,
64    );
65    registry.register_provider(
66        GoogleLanguageModelProvider::new(client.http_client(), cx),
67        cx,
68    );
69    registry.register_provider(
70        MistralLanguageModelProvider::new(client.http_client(), cx),
71        cx,
72    );
73    registry.register_provider(
74        BedrockLanguageModelProvider::new(client.http_client(), cx),
75        cx,
76    );
77    registry.register_provider(
78        OpenRouterLanguageModelProvider::new(client.http_client(), cx),
79        cx,
80    );
81    registry.register_provider(
82        VercelLanguageModelProvider::new(client.http_client(), cx),
83        cx,
84    );
85    registry.register_provider(XAiLanguageModelProvider::new(client.http_client(), cx), cx);
86    registry.register_provider(CopilotChatLanguageModelProvider::new(cx), cx);
87}