菜单

LLM 集成

相关源文件

本文档概述了 GPT Academic 集成各种大型语言模型 (LLM) 的架构。它解释了连接应用程序与不同 LLM 提供程序的桥接系统、模型注册过程以及请求和响应的处理方式。有关 Azure OpenAI 集成的具体详细信息,请参阅Azure OpenAI 集成,有关本地 LLM 管理的信息,请参阅本地 LLM 管理

系统概览

GPT Academic 采用灵活的桥接架构,通过统一的接口支持多个 LLM 提供商。这种设计允许应用程序在与不同 LLM API 通信时,为用户和插件开发者保持一致的体验。

来源:request_llms/bridge_all.py1-120

Bridge 架构

LLM 集成的核心组件是桥接架构,它抽象了不同 LLM 提供商之间的差异。这种设计模式允许应用程序在不更改核心应用程序逻辑的情况下切换不同的 LLM。

来源:request_llms/bridge_all.py11-19 request_llms/bridge_all.py119-554

核心接口

GPT Academic 提供了两个主要的 LLM 交互函数

  1. predict:用于正常对话,包含完整的交互功能(UI 更新、流式输出),非线程安全
  2. predict_no_ui_long_connection:支持插件使用的多线程,接口简单,无 UI 更新

这些函数在各自的桥接模块中为每个 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

Payload 生成

每个桥接模块都包含一个 generate_payload 函数,该函数将用户的输入、对话历史和系统提示转换为适合特定 LLM 提供商 API 的格式。

来源:request_llms/bridge_chatgpt.py449-576 request_llms/bridge_claude.py251-309 request_llms/bridge_ollama.py228-272

支持的 LLM 提供商

GPT Academic 支持广泛的 LLM 提供商,每个提供商都有自己的桥接模块

提供商桥接模块模型主要功能
OpenAIbridge_chatgpt.pyGPT-3.5, GPT-4, o1流式传输,视觉模型
Anthropicbridge_claude.pyClaude 模型长上下文窗口
Googlebridge_google_gemini.pyGemini 模型多模态能力
Coherebridge_cohere.pyCommand 模型专为特定任务设计
Ollamabridge_ollama.py各种开源模型本地部署
Zhipubridge_zhipu.pyGLM 模型中文能力
本地本地桥接模块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

令牌管理

该系统包含令牌管理,以确保请求不超过模型限制

  1. 分词器model_info 中的每个模型都有一个关联的分词器用于计数令牌
  2. 令牌计数get_token_num_gpt35 等函数计算文本的令牌数
  3. 令牌限制:每个模型都指定其 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 提供商的支持变得容易,而全面的错误处理则确保了强大的用户体验。该系统支持流式和完整响应,并考虑了线程安全性,可满足从交互式聊天到插件后台处理的各种用例。