chore: simplify model yaml (#308)

This commit is contained in:
N3ko 2025-07-31 12:15:55 +08:00 committed by GitHub
parent 397912fccf
commit 977f2c423a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 37 additions and 156 deletions

View File

@ -106,7 +106,7 @@ func modelDo2To(model *modelmgr.Model, locale i18n.Locale) (*developer_api.Model
PriceOut: 0, PriceOut: 0,
SystemPromptLimit: nil, SystemPromptLimit: nil,
}, },
ModelName: mm.Name, ModelName: model.Name,
ModelClassName: mm.Protocol.TOModelClass().String(), ModelClassName: mm.Protocol.TOModelClass().String(),
IsOffline: mm.Status != modelmgr.StatusInUse, IsOffline: mm.Status != modelmgr.StatusInUse,
ModelParams: mps, ModelParams: mps,

View File

@ -259,7 +259,7 @@ func toModelDetail(m *modelmgr.Model) *playground.ModelDetail {
return &playground.ModelDetail{ return &playground.ModelDetail{
Name: ptr.Of(m.Name), Name: ptr.Of(m.Name),
ModelName: ptr.Of(m.Meta.Name), ModelName: ptr.Of(m.Name),
ModelID: ptr.Of(m.ID), ModelID: ptr.Of(m.ID),
ModelFamily: ptr.Of(int64(mm.Protocol.TOModelClass())), ModelFamily: ptr.Of(int64(mm.Protocol.TOModelClass())),
ModelIconURL: ptr.Of(m.IconURL), ModelIconURL: ptr.Of(m.IconURL),

View File

@ -90,7 +90,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: Doubao
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -107,10 +106,10 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -118,16 +117,10 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {}
status: 0 status: 0

View File

@ -66,7 +66,6 @@ default_parameters:
zh: 生成多样性 zh: 生成多样性
en: Generation diversity en: Generation diversity
meta: meta:
name: doubao-1.5-lite
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -82,10 +81,10 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -93,16 +92,10 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {}
status: 0 status: 0

View File

@ -66,7 +66,6 @@ default_parameters:
zh: 生成多样性 zh: 生成多样性
en: Generation diversity en: Generation diversity
meta: meta:
name: doubao-1.5-pro-256k
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -82,10 +81,10 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -93,16 +92,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -66,7 +66,6 @@ default_parameters:
zh: 生成多样性 zh: 生成多样性
en: Generation diversity en: Generation diversity
meta: meta:
name: doubao-1.5-pro-32k
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -82,10 +81,10 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -93,16 +92,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -88,7 +88,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: doubao-1.5-thinking-pro
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -105,10 +104,10 @@ meta:
reasoning: true reasoning: true
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -116,16 +115,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -88,7 +88,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: doubao-1.5-thinking-vision-pro
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -106,10 +105,10 @@ meta:
reasoning: true reasoning: true
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -117,16 +116,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -88,7 +88,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: doubao-1.5-vision-lite
protocol: ark protocol: ark
capability: capability:
function_call: false function_call: false
@ -105,10 +104,10 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -116,16 +115,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -88,7 +88,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: doubao-1.5-vision-pro
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -106,10 +105,10 @@ meta:
reasoning: true reasoning: true
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -117,16 +116,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -88,7 +88,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: doubao-seed-1.6-flash
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -106,10 +105,10 @@ meta:
reasoning: true reasoning: true
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -117,16 +116,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -88,7 +88,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: doubao-seed-1.6-thinking
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -106,10 +105,10 @@ meta:
reasoning: true reasoning: true
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -117,16 +116,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -88,7 +88,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: doubao-seed-1.6
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -106,10 +105,10 @@ meta:
reasoning: true reasoning: true
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -117,16 +116,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -66,7 +66,6 @@ default_parameters:
zh: 生成多样性 zh: 生成多样性
en: Generation diversity en: Generation diversity
meta: meta:
name: deepseek-r1-ve
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -82,10 +81,10 @@ meta:
reasoning: true reasoning: true
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -93,16 +92,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -66,7 +66,6 @@ default_parameters:
zh: 生成多样性 zh: 生成多样性
en: Generation diversity en: Generation diversity
meta: meta:
name: deepseek-v3-ve
protocol: ark protocol: ark
capability: capability:
function_call: true function_call: true
@ -82,10 +81,10 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://ark.cn-beijing.volces.com/api/v3/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: "" # model_id / endpoint_id
temperature: 0.1 temperature: 0.1
frequency_penalty: 0 frequency_penalty: 0
presence_penalty: 0 presence_penalty: 0
@ -93,16 +92,11 @@ meta:
top_p: 0.7 top_p: 0.7
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: ark:
region: "" region: ""
access_key: "" access_key: ""
secret_key: "" secret_key: ""
retry_times: null retry_times: null
custom_header: {} custom_header: {}
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -128,7 +128,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: test_model
protocol: test_protocol protocol: test_protocol
capability: capability:
function_call: true function_call: true
@ -150,7 +149,7 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: https://localhost:1234/chat/completion base_url: https://localhost:1234/v1
api_key: qweasdzxc api_key: qweasdzxc
timeout: 10s timeout: 10s
model: model_name model: model_name
@ -164,7 +163,7 @@ meta:
- bye - bye
enable_thinking: false enable_thinking: false
openai: openai:
by_azure: true by_azure: false
api_version: "2024-10-21" api_version: "2024-10-21"
response_format: response_format:
type: text type: text

View File

@ -47,7 +47,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: Claude-3.5-Sonnet
protocol: claude protocol: claude
capability: capability:
function_call: true function_call: true
@ -64,7 +63,7 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://api.anthropic.com/v1/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: ""
@ -75,16 +74,11 @@ meta:
top_p: 1 top_p: 1
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: claude:
by_bedrock: false by_bedrock: false
access_key: "" access_key: ""
secret_access_key: "" secret_access_key: ""
session_token: "" session_token: ""
region: "" region: ""
ark: null
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -69,7 +69,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: DeepSeek-V3
protocol: deepseek protocol: deepseek
capability: capability:
function_call: false function_call: false
@ -85,7 +84,7 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://api.deepseek.com"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: ""
@ -96,12 +95,7 @@ meta:
top_p: 1 top_p: 1
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: null
deepseek: deepseek:
response_format_type: text response_format_type: text
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -88,7 +88,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: Gemini-2.5-Flash
protocol: gemini protocol: gemini
capability: capability:
function_call: true function_call: true
@ -107,7 +106,7 @@ meta:
reasoning: true reasoning: true
prefill_response: true prefill_response: true
conn_config: conn_config:
base_url: "" base_url: "https://generativelanguage.googleapis.com/"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: gemini-2.5-flash model: gemini-2.5-flash
@ -118,11 +117,6 @@ meta:
top_p: 1 top_p: 1
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: null
deepseek: null
qwen: null
gemini: gemini:
backend: 0 backend: 0
project: "" project: ""

View File

@ -47,7 +47,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: Gemma-3
protocol: ollama protocol: ollama
capability: capability:
function_call: true function_call: true
@ -63,7 +62,7 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "http://host.docker.internal:11434"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: ""
@ -74,11 +73,5 @@ meta:
top_p: 0.95 top_p: 0.95
top_k: 20 top_k: 20
stop: [] stop: []
openai: null
claude: null
ark: null
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -128,7 +128,6 @@ default_parameters:
zh: 输入及输出设置 zh: 输入及输出设置
en: Input and output settings en: Input and output settings
meta: meta:
name: GPT-4o
protocol: openai protocol: openai
capability: capability:
function_call: true function_call: true
@ -145,7 +144,7 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://api.openai.com/v1"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: ""
@ -162,10 +161,5 @@ meta:
response_format: response_format:
type: text type: text
jsonschema: null jsonschema: null
claude: null
ark: null
deepseek: null
qwen: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -66,7 +66,6 @@ default_parameters:
zh: 生成多样性 zh: 生成多样性
en: Generation diversity en: Generation diversity
meta: meta:
name: Qwen3-32B
protocol: qwen protocol: qwen
capability: capability:
function_call: true function_call: true
@ -82,7 +81,7 @@ meta:
reasoning: false reasoning: false
prefill_response: false prefill_response: false
conn_config: conn_config:
base_url: "" base_url: "https://dashscope.aliyuncs.com/compatible-mode/v1"
api_key: "" api_key: ""
timeout: 0s timeout: 0s
model: "" model: ""
@ -93,14 +92,9 @@ meta:
top_p: 1 top_p: 1
top_k: 0 top_k: 0
stop: [] stop: []
openai: null
claude: null
ark: null
deepseek: null
qwen: qwen:
response_format: response_format:
type: text type: text
jsonschema: null jsonschema: null
gemini: null
custom: {} custom: {}
status: 0 status: 0

View File

@ -163,7 +163,7 @@ func BuildAgent(ctx context.Context, conf *Config) (r *AgentRunner, err error) {
isReActAgent = true isReActAgent = true
requireCheckpoint = true requireCheckpoint = true
if modelInfo.Meta.Capability != nil && !modelInfo.Meta.Capability.FunctionCall { if modelInfo.Meta.Capability != nil && !modelInfo.Meta.Capability.FunctionCall {
return nil, fmt.Errorf("model %v does not support function call", modelInfo.Meta.Name) return nil, fmt.Errorf("model %v does not support function call", modelInfo.Name)
} }
} }

View File

@ -123,7 +123,6 @@ func (p *Parameter) GetString(tp DefaultType) (string, error) {
} }
type ModelMeta struct { type ModelMeta struct {
Name string `yaml:"name"`
Protocol chatmodel.Protocol `yaml:"protocol"` // 模型通信协议 Protocol chatmodel.Protocol `yaml:"protocol"` // 模型通信协议
Capability *Capability `yaml:"capability"` // 模型能力 Capability *Capability `yaml:"capability"` // 模型能力
ConnConfig *chatmodel.Config `yaml:"conn_config"` // 模型连接配置 ConnConfig *chatmodel.Config `yaml:"conn_config"` // 模型连接配置