LLM集成层为在RAGFlow中集成多个大型语言模型提供商提供了一个统一抽象。该层负责处理模型实例化、配置管理、API密钥存储,并为跨OpenAI、Azure、千问、智谱AI等众多提供商的不同模型类型提供一致的接口。
有关这些模型在文档处理中的实际用法,请参阅文档处理管道。有关模型在代理工作流中如何使用的详细信息,请参阅代理流系统。
LLM集成层遵循工厂模式,具有特定于提供商的实现和统一的服务层
来源:rag/llm/__init__.py152-289 rag/llm/chat_model.py60-68 rag/llm/embedding_model.py39-45 api/db/services/llm_service.py206-215
系统使用字典将提供商名称映射到实现类
来源:rag/llm/__init__.py209-250 rag/llm/__init__.py152-183 rag/llm/chat_model.py60-68 rag/llm/embedding_model.py39-45
每种模型类型都有一个定义接口的公共基类
| 模型类型 | 基类 | 关键方法 | 文件 |
|---|---|---|---|
| 对话 | 基础 | chat(), chat_streamly(), chat_with_tools() | rag/llm/chat_model.py60-393 |
| 嵌入 | 基础 | encode(), encode_queries() | rag/llm/embedding_model.py39-58 |
| 重排序 | 基础 | similarity() | rag/llm/rerank_model.py39-56 |
| 计算机视觉 | 基础 | describe(), describe_with_prompt() | rag/llm/cv_model.py38-47 |
| 文本转语音 | 基础 | tts() | rag/llm/tts_model.py65-74 |
| 语音转文本 | 基础 | transcription() | rag/llm/sequence2txt_model.py28-38 |
来源:rag/llm/chat_model.py60-68 rag/llm/embedding_model.py39-45 rag/llm/rerank_model.py39-44 rag/llm/cv_model.py38-47 rag/llm/tts_model.py65-71 rag/llm/sequence2txt_model.py28-32
模型配置存储在conf/llm_factories.json中,并具有以下结构
来源:conf/llm_factories.json1-50 api/db/init_data.py98-121 api/db/services/llm_service.py22-36
TenantLLMService.model_instance()方法处理特定于提供商的实例化
来源:api/db/services/llm_service.py126-161 api/db/services/llm_service.py80-124
基础对话模型实现了带有分类和重试逻辑的复杂错误处理
来源:rag/llm/chat_model.py74-97 rag/llm/chat_model.py70-73 rag/llm/chat_model.py190-220
| 参数 | 环境变量 | 默认 | 描述 |
|---|---|---|---|
max_retries | LLM_MAX_RETRIES | 5 | 最大重试次数 |
base_delay | LLM_BASE_DELAY | 2.0 | 指数退避的基础延迟 |
timeout | LM_TIMEOUT_SECONDS | 600 | 请求超时(秒) |
来源:rag/llm/chat_model.py99-105 rag/llm/chat_model.py106-164 rag/llm/chat_model.py236-338
ToolCallSession协议定义了工具执行的接口
LLMBundle类提供了一个高级服务接口,处理
来源:api/db/services/llm_service.py206-225 api/db/services/llm_service.py233-257 api/db/services/llm_service.py164-198
系统通过TenantLLM表支持每租户模型配置
| 字段 | 类型 | 描述 |
|---|---|---|
tenant_id | 字符串 | 租户标识符 |
llm_factory | 字符串 | 提供商名称(例如,“OpenAI”) |
llm_name | 字符串 | 模型名称(例如,“gpt-4o”) |
model_type | 字符串 | 模型类型(对话、嵌入等) |
api_key | 字符串 | 加密的API密钥 |
api_base | 字符串 | 自定义基础URL |
used_tokens | 整型 | 令牌使用计数器 |
来源:api/db/services/llm_service.py40-51 api/db/services/llm_service.py115-131
API层提供用于管理LLM配置的端点
来源:api/apps/llm_app.py53-132 api/apps/llm_app.py135-287 api/apps/llm_app.py144-195
添加新的模型配置时,系统执行验证