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;
23pub use crate::settings::*;
24
25pub fn init(user_store: Entity<UserStore>, client: Arc<Client>, cx: &mut App) {
26    crate::settings::init(cx);
27    let registry = LanguageModelRegistry::global(cx);
28    registry.update(cx, |registry, cx| {
29        register_language_model_providers(registry, user_store, client, cx);
30    });
31}
32
33fn register_language_model_providers(
34    registry: &mut LanguageModelRegistry,
35    user_store: Entity<UserStore>,
36    client: Arc<Client>,
37    cx: &mut Context<LanguageModelRegistry>,
38) {
39    registry.register_provider(
40        CloudLanguageModelProvider::new(user_store.clone(), client.clone(), cx),
41        cx,
42    );
43
44    registry.register_provider(
45        AnthropicLanguageModelProvider::new(client.http_client(), cx),
46        cx,
47    );
48    registry.register_provider(
49        OpenAiLanguageModelProvider::new(client.http_client(), cx),
50        cx,
51    );
52    registry.register_provider(
53        OllamaLanguageModelProvider::new(client.http_client(), cx),
54        cx,
55    );
56    registry.register_provider(
57        LmStudioLanguageModelProvider::new(client.http_client(), cx),
58        cx,
59    );
60    registry.register_provider(
61        DeepSeekLanguageModelProvider::new(client.http_client(), cx),
62        cx,
63    );
64    registry.register_provider(
65        GoogleLanguageModelProvider::new(client.http_client(), cx),
66        cx,
67    );
68    registry.register_provider(
69        MistralLanguageModelProvider::new(client.http_client(), cx),
70        cx,
71    );
72    registry.register_provider(
73        BedrockLanguageModelProvider::new(client.http_client(), cx),
74        cx,
75    );
76    registry.register_provider(
77        OpenRouterLanguageModelProvider::new(client.http_client(), cx),
78        cx,
79    );
80    registry.register_provider(
81        VercelLanguageModelProvider::new(client.http_client(), cx),
82        cx,
83    );
84    registry.register_provider(CopilotChatLanguageModelProvider::new(cx), cx);
85}