菜单

LLM 集成层

相关源文件

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_retriesLLM_MAX_RETRIES5最大重试次数
base_delayLLM_BASE_DELAY2.0指数退避的基础延迟
timeoutLM_TIMEOUT_SECONDS600请求超时(秒)

来源:rag/llm/chat_model.py62-67

工具调用支持

工具集成架构

来源:rag/llm/chat_model.py99-105 rag/llm/chat_model.py106-164 rag/llm/chat_model.py236-338

工具调用协议

ToolCallSession协议定义了工具执行的接口

来源:rag/llm/chat_model.py56-57

服务层集成

LLMBundle抽象

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层提供用于管理LLM配置的端点

来源:api/apps/llm_app.py53-132 api/apps/llm_app.py135-287 api/apps/llm_app.py144-195

模型验证过程

添加新的模型配置时,系统执行验证

来源:api/apps/llm_app.py206-281 api/apps/llm_app.py62-86