Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/config-zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
| :----------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------- | :--------------------------------------------- |
| `llms[].name` | `string` | LLM 的名称 (或称 'id')。例如 `my-favorite-gemini-king`。用于在其他配置部分 (如 `api.llm`, `storage.feed.embedding_llm` 等) 引用此 LLM。 | | 是 |
| `llms[].default` | `bool` | 此 LLM 是否为默认 LLM。只能有一个 LLM 是默认的。 | `false` | 否 (但如果依赖默认行为,则必须有一个为 `true`) |
| `llms[].provider` | `string` | LLM 的提供商, 可选值为 `openai`, `openrouter`, `deepseek`, `gemini`, `volc`, `siliconflow` 之一。例如 `openai`。 | | 是 |
| `llms[].provider` | `string` | LLM 的提供商, 可选值为 `openai`, `openrouter`, `requesty`, `deepseek`, `gemini`, `volc`, `siliconflow` 之一。例如 `openai`。 | | 是 |
| `llms[].endpoint` | `string` | LLM 的自定义端点。例如 `https://api.openai.com/v1`。 | (提供商特定默认值) | 否 |
| `llms[].api_key` | `string` | LLM 的 API 密钥。 | | 是 |
| `llms[].model` | `string` | LLM 的模型。例如 `gpt-4o-mini`。如果用于生成任务 (如总结),则不能为空。如果此 LLM 被使用,则不能与 `embedding_model` 同时为空。 | | 条件性必需 |
Expand Down
2 changes: 1 addition & 1 deletion docs/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ This section defines the list of available Large Language Models. At least one L
| :----------------------- | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------- | :--------------------------------------------------------- |
| `llms[].name` | `string` | Name (or 'id') of the LLM. E.g., `my-favorite-gemini-king`. Used to refer to this LLM in other configuration sections (e.g., `api.llm`, `storage.feed.embedding_llm`). | | Yes |
| `llms[].default` | `bool` | Whether this LLM is the default LLM. Only one LLM can be the default. | `false` | No (but one must be `true` if relying on default behavior) |
| `llms[].provider` | `string` | Provider of the LLM, one of `openai`, `openrouter`, `deepseek`, `gemini`, `volc`, `siliconflow`. E.g., `openai`. | | Yes |
| `llms[].provider` | `string` | Provider of the LLM, one of `openai`, `openrouter`, `requesty`, `deepseek`, `gemini`, `volc`, `siliconflow`. E.g., `openai`. | | Yes |
| `llms[].endpoint` | `string` | Custom endpoint for the LLM. E.g., `https://api.openai.com/v1`. | (Provider-specific default) | No |
| `llms[].api_key` | `string` | API key for the LLM. | | Yes |
| `llms[].model` | `string` | Model of the LLM. E.g., `gpt-4o-mini`. Cannot be empty if used for generation tasks (e.g., summarization). If this LLM is used, cannot be empty along with `embedding_model`. | | Conditionally Required |
Expand Down
2 changes: 1 addition & 1 deletion pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ type App struct {
type LLM struct {
Name string `yaml:"name,omitempty" json:"name,omitempty" desc:"The name (or call it 'id') of the LLM. e.g. my-favorite-gemini-king. It is required when api.llm is set."`
Default bool `yaml:"default,omitempty" json:"default,omitempty" desc:"Whether this LLM is the default LLM. Only one LLM can be the default."`
Provider string `yaml:"provider,omitempty" json:"provider,omitempty" desc:"The provider of the LLM, one of openai, openrouter, deepseek, gemini, volc, siliconflow. e.g. openai"`
Provider string `yaml:"provider,omitempty" json:"provider,omitempty" desc:"The provider of the LLM, one of openai, openrouter, requesty, deepseek, gemini, volc, siliconflow. e.g. openai"`
Endpoint string `yaml:"endpoint,omitempty" json:"endpoint,omitempty" desc:"The custom endpoint of the LLM. e.g. https://api.openai.com/v1"`
APIKey string `yaml:"api_key,omitempty" json:"api_key,omitempty" desc:"The API key of the LLM. It is required when api.llm is set."`
Model string `yaml:"model,omitempty" json:"model,omitempty" desc:"The model of the LLM. e.g. gpt-4o-mini. Can not be empty with embedding_model at same time when api.llm is set."`
Expand Down
6 changes: 4 additions & 2 deletions pkg/llm/llm.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ type ProviderType string
const (
ProviderTypeOpenAI ProviderType = "openai"
ProviderTypeOpenRouter ProviderType = "openrouter"
ProviderTypeRequesty ProviderType = "requesty"
ProviderTypeDeepSeek ProviderType = "deepseek"
ProviderTypeGemini ProviderType = "gemini"
ProviderTypeVolc ProviderType = "volc" // Rename MaaS to ARK. 😄
Expand All @@ -87,6 +88,7 @@ const (
var defaultEndpoints = map[ProviderType]string{
ProviderTypeOpenAI: "https://api.openai.com/v1",
ProviderTypeOpenRouter: "https://openrouter.ai/api/v1",
ProviderTypeRequesty: "https://router.requesty.ai/v1",
ProviderTypeDeepSeek: "https://api.deepseek.com/v1",
ProviderTypeGemini: "https://generativelanguage.googleapis.com/v1beta",
ProviderTypeVolc: "https://ark.cn-beijing.volces.com/api/v3",
Expand All @@ -101,7 +103,7 @@ func (c *Config) Validate() error { //nolint:cyclop
switch c.Provider {
case "":
c.Provider = ProviderTypeOpenAI
case ProviderTypeOpenAI, ProviderTypeOpenRouter, ProviderTypeDeepSeek,
case ProviderTypeOpenAI, ProviderTypeOpenRouter, ProviderTypeRequesty, ProviderTypeDeepSeek,
ProviderTypeGemini, ProviderTypeVolc, ProviderTypeSiliconFlow:
default:
return errors.Errorf("invalid provider: %s", c.Provider)
Expand Down Expand Up @@ -329,7 +331,7 @@ func (f *factory) Get(name string) LLM {

func (f *factory) new(c *Config) LLM {
switch c.Provider {
case ProviderTypeOpenAI, ProviderTypeOpenRouter, ProviderTypeDeepSeek, ProviderTypeVolc, ProviderTypeSiliconFlow: //nolint:lll
case ProviderTypeOpenAI, ProviderTypeOpenRouter, ProviderTypeRequesty, ProviderTypeDeepSeek, ProviderTypeVolc, ProviderTypeSiliconFlow: //nolint:lll
return newCached(newOpenAI(c), f.Dependencies().KVStorage)

case ProviderTypeGemini:
Expand Down
Loading