# 统一模型调用指南 ## 概述 本项目采用统一的模型配置管理,所有模型配置集中存储在 `model_setting.yaml` 中,通过 `model_config_loader.py` 提供统一接口。 ## 配置文件结构 ### model_setting.yaml ```yaml # 可用模型列表(必须与 model_handler.py 中的模型类型名称一致) available_models: - qwen3_5_35b_a3b # DashScope Qwen3.5-35B-A3B - shutian_qwen3_5_35b # 蜀天Qwen3.5-35B - shutian_qwen3_5_122b # 蜀天Qwen3.5-122B - lq_qwen3_8b_emd # 本地Embedding模型 # 功能模块模型配置 model_settings: # 文档分类 - 二级分类 doc_classification_secondary: model: shutian_qwen3_5_35b enable_thinking: false description: "文档二级分类,蜀天35B" # 文档分类 - 三级分类 doc_classification_tertiary: model: shutian_qwen3_5_35b enable_thinking: false description: "文档三级分类,蜀天35B" # 完整性审查 - 内容生成 completeness_review_generate: model: shutian_qwen3_5_122b enable_thinking: true description: "完整性审查内容生成,蜀天122B详细推理" # 敏感信息检查 sensitive_check: model: shutian_qwen3_5_35b enable_thinking: false description: "敏感信息快速检查,蜀天35B" # ... 其他功能配置 # 默认配置(当功能未指定时使用) default: model: shutian_qwen3_5_35b enable_thinking: false ``` ## 模型调用方式 ### 方式一:使用 function_name(推荐) 通过功能名称自动从 `model_setting.yaml` 加载对应的模型和 thinking 模式。 ```python from foundation.ai.agent.generate.model_generate import generate_model_client # 调用模型,自动加载 doc_classification_tertiary 配置的模型 response = await generate_model_client.get_model_generate_invoke( trace_id="my_trace_id", system_prompt="你是专家", user_prompt="请分析...", function_name="doc_classification_tertiary" # 功能名称 ) ``` **适用场景**:业务功能调用,如分类、审查等。 ### 方式二:使用 model_name 直接指定模型名称,跳过 `model_setting.yaml` 配置。 ```python from foundation.ai.agent.generate.model_generate import generate_model_client # 直接指定模型 response = await generate_model_client.get_model_generate_invoke( trace_id="my_trace_id", system_prompt="你是专家", user_prompt="请分析...", model_name="shutian_qwen3_5_122b" # 直接指定模型 ) ``` **适用场景**:需要临时切换模型,或测试特定模型性能。 ### 方式三:使用 model_handler 通过 `model_handler` 获取模型实例,进行更底层的操作。 ```python from foundation.ai.models.model_handler import model_handler # 根据功能名称获取模型 model = model_handler.get_model_by_function("doc_classification_tertiary") # 或根据模型名称获取 model = model_handler.get_model_by_name("shutian_qwen3_5_35b") # 调用模型 response = await model.ainvoke(messages) ``` **适用场景**:需要自定义调用逻辑,或集成到现有框架。 ### 方式四:流式调用 使用流式输出生成文本。 ```python from foundation.ai.agent.generate.model_generate import generate_model_client # 流式调用(使用 function_name) for chunk in generate_model_client.get_model_generate_stream( trace_id="my_trace_id", messages=messages, function_name="rag_answer_generate" ): yield chunk ``` **适用场景**:实时响应场景,如聊天、长文本生成。 ## 配置加载接口 ### 获取模型配置 ```python from foundation.ai.models.model_config_loader import ( get_model_for_function, get_thinking_mode_for_function, get_full_config_for_function ) # 获取指定功能的模型名称 model_name = get_model_for_function("doc_classification_tertiary") # 返回: "shutian_qwen3_5_35b" # 获取指定功能的 thinking 模式 thinking = get_thinking_mode_for_function("doc_classification_tertiary") # 返回: False # 获取完整配置 config = get_full_config_for_function("doc_classification_tertiary") # 返回: ModelFunctionConfig(model="shutian_qwen3_5_35b", enable_thinking=False, description="...") ``` ### 获取默认配置 ```python from foundation.ai.models.model_config_loader import get_model_for_function # 获取默认模型(当功能未指定时使用) default_model = get_model_for_function("default") # 返回: "shutian_qwen3_5_35b" ``` ## 功能名称列表 | 功能名称 | 说明 | 默认模型 | |---------|------|---------| | `doc_classification_secondary` | 文档二级分类 | shutian_qwen3_5_35b | | `doc_classification_tertiary` | 文档三级分类 | shutian_qwen3_5_35b | | `doc_classification_tertiary_complex` | 三级分类-复杂段落 | shutian_qwen3_5_122b | | `completeness_review_generate` | 完整性审查-生成 | shutian_qwen3_5_122b | | `completeness_review_classify` | 完整性审查-分类 | shutian_qwen3_5_35b | | `rag_query_understand` | RAG查询理解 | shutian_qwen3_5_35b | | `rag_answer_generate` | RAG答案生成 | shutian_qwen3_5_122b | | `sensitive_check` | 敏感信息检查 | shutian_qwen3_5_35b | | `grammar_check` | 语法检查 | shutian_qwen3_5_35b | | `timeliness_review` | 时效性审查 | shutian_qwen3_5_35b | | `reference_review` | 规范性审查 | shutian_qwen3_5_35b | | `directory_extraction` | 目录提取 | shutian_qwen3_5_35b | | `default` | 默认兜底配置 | shutian_qwen3_5_35b | ## 迁移指南 ### 从旧代码迁移 **旧代码(硬编码模型):** ```python # 不推荐:硬编码模型名称 response = await model_client.get_model_generate_invoke( trace_id="xxx", messages=messages, model_name="qwen3_30b" # 硬编码 ) ``` **新代码(使用配置):** ```python # 推荐:使用 function_name 从配置加载 response = await model_client.get_model_generate_invoke( trace_id="xxx", messages=messages, function_name="completeness_review_classify" # 从配置加载 ) ``` ### 新增功能配置步骤 1. **在 `model_setting.yaml` 中添加配置:** ```yaml model_settings: # 新功能配置 my_new_feature: model: shutian_qwen3_5_35b enable_thinking: false description: "新功能描述" ``` 2. **在代码中使用:** ```python response = await generate_model_client.get_model_generate_invoke( trace_id="xxx", messages=messages, function_name="my_new_feature" ) ``` ## 注意事项 1. **优先使用 `function_name`**:便于统一管理和调整模型配置 2. **不要随意修改 `available_models`**:必须与 `model_handler.py` 中的模型类型名称一致 3. **保留 `default` 配置**:作为兜底方案,防止功能未指定时出错 4. **thinking 模式**:仅对 Qwen3.5 系列模型有效,其他模型自动忽略 ## 故障排查 ### 模型加载失败 检查日志: ``` [模型调用] 加载功能配置失败 [xxx]: ... ``` 解决方案: 1. 检查 `model_setting.yaml` 是否存在 2. 检查功能名称是否拼写正确 3. 检查配置的模型是否在 `available_models` 列表中 ### 配置未生效 检查代码是否正确传入了 `function_name`,而不是硬编码 `model_name`。 ## 相关文件 - `config/model_setting.yaml` - 模型配置文件 - `config/model_config_loader.py` - 配置加载接口 - `foundation/ai/models/model_handler.py` - 模型管理器 - `foundation/ai/agent/generate/model_generate.py` - 模型调用客户端