本文档概述了 GPT Academic 集成各种大型语言模型 (LLM) 的架构。它解释了连接应用程序与不同 LLM 提供程序的桥接系统、模型注册过程以及请求和响应的处理方式。有关 Azure OpenAI 集成的具体详细信息,请参阅Azure OpenAI 集成,有关本地 LLM 管理的信息,请参阅本地 LLM 管理。
GPT Academic 采用灵活的桥接架构,通过统一的接口支持多个 LLM 提供商。这种设计允许应用程序在与不同 LLM API 通信时,为用户和插件开发者保持一致的体验。
来源:request_llms/bridge_all.py1-120
LLM 集成的核心组件是桥接架构,它抽象了不同 LLM 提供商之间的差异。这种设计模式允许应用程序在不更改核心应用程序逻辑的情况下切换不同的 LLM。
来源:request_llms/bridge_all.py11-19 request_llms/bridge_all.py119-554
GPT Academic 提供了两个主要的 LLM 交互函数
这些函数在各自的桥接模块中为每个 LLM 提供商实现,并在中央的 model_info 字典中注册。
| 功能 | 目的 | 线程安全 | 用例 |
|---|---|---|---|
predict | 基于 UI 的交互,支持完整的流式输出 | 否 | UI 中的交互式聊天 |
predict_no_ui_long_connection | 无 UI 更新的后台处理 | 是 | 插件函数调用 |
来源:request_llms/bridge_all.py1-19 request_llms/bridge_chatgpt.py1-9
LLM 集成的核心组件是 bridge_all.py 中的 model_info 字典。此字典将模型名称映射到其配置和处理函数。
来源:request_llms/bridge_all.py119-554
当用户或插件发出 LLM 请求时,系统遵循以下流程
来源:request_llms/bridge_chatgpt.py128-223 request_llms/bridge_chatgpt.py226-406
每个桥接模块都包含一个 generate_payload 函数,该函数将用户的输入、对话历史和系统提示转换为适合特定 LLM 提供商 API 的格式。
来源:request_llms/bridge_chatgpt.py449-576 request_llms/bridge_claude.py251-309 request_llms/bridge_ollama.py228-272
GPT Academic 支持广泛的 LLM 提供商,每个提供商都有自己的桥接模块
| 提供商 | 桥接模块 | 模型 | 主要功能 |
|---|---|---|---|
| OpenAI | bridge_chatgpt.py | GPT-3.5, GPT-4, o1 | 流式传输,视觉模型 |
| Anthropic | bridge_claude.py | Claude 模型 | 长上下文窗口 |
| bridge_google_gemini.py | Gemini 模型 | 多模态能力 | |
| Cohere | bridge_cohere.py | Command 模型 | 专为特定任务设计 |
| Ollama | bridge_ollama.py | 各种开源模型 | 本地部署 |
| Zhipu | bridge_zhipu.py | GLM 模型 | 中文能力 |
| 本地 | 本地桥接模块 | ChatGLM, RWKV 等 | 隐私,无 API 成本 |
来源:request_llms/bridge_all.py119-554 request_llms/bridge_all.py586-1008
该系统允许为每个 LLM 提供商配置端点。用户可以通过 config.py 中的 API_URL_REDIRECT 配置将 API 请求重定向到不同的端点。
来源:request_llms/bridge_all.py71-106
该系统包含令牌管理,以确保请求不超过模型限制
model_info 中的每个模型都有一个关联的分词器用于计数令牌get_token_num_gpt35 等函数计算文本的令牌数max_token 值,以防止超出限制来源:request_llms/bridge_all.py51-67 request_llms/bridge_all.py108-113
桥接模块包含针对各种情况的全面错误处理
来源:request_llms/bridge_chatgpt.py37-46 request_llms/bridge_chatgpt.py419-447
一些 LLM 提供商支持多模态功能,例如图像理解。系统通过模型配置中的 has_multimodal_capacity 标志以及桥接模块中的特殊处理来处理此问题。
来源:request_llms/bridge_chatgpt.py48-69 request_llms/bridge_chatgpt_vision.py1-307
GPT Academic 通过 oai_std_model_template.py 文件提供了一个标准模板,用于集成 OpenAI 兼容的 API。此模板简化了对遵循 OpenAI API 格式的新提供商的支持。
来源:request_llms/oai_std_model_template.py19-435
桥接系统根据 AVAIL_LLM_MODELS 配置中列出的模型按需动态加载 LLM 桥接。
来源:request_llms/bridge_all.py601-1008
GPT Academic 中的 LLM 集成系统旨在实现灵活性、可扩展性和用户友好性。它通过统一的接口抽象了不同 LLM 提供商的复杂性,使应用程序能够支持广泛的模型,同时为用户和开发人员保持一致的体验。
桥接架构使得添加新 LLM 提供商的支持变得容易,而全面的错误处理则确保了强大的用户体验。该系统支持流式和完整响应,并考虑了线程安全性,可满足从交互式聊天到插件后台处理的各种用例。