菜单

LLM 集成

相关源文件

此页面解释了 MetaGPT 如何与各种语言模型提供商集成,包括架构、配置选项和支持的 LLM 服务。它涵盖了支持与不同 AI 模型通信的底层框架,同时为系统的其余部分保持一致的接口。

架构概述

MetaGPT 采用以 BaseLLM 抽象类为中心的提供商驱动架构,该类定义了所有 LLM 提供商实现必须遵循的通用接口。这种设计允许框架轻松地在不同的 LLM 服务之间切换,同时为更高级别的组件保持相同的 API。

来源: metagpt/provider/base_llm.py metagpt/llm.py metagpt/configs/llm_config.py

提供商注册与选择

MetaGPT 使用注册表模式来管理 LLM 提供商。每个提供商实现都使用 @register_provider 装饰器进行注册,该装饰器支持其 LLM 类型。当请求 LLM 时,系统会根据配置的 LLM 类型选择适当的提供商。

来源: metagpt/provider/llm_provider_registry.py metagpt/provider/openai_api.py43-56

BaseLLM 接口

BaseLLM 抽象基类定义了所有提供商实现必须实现的通用接口。主要方法包括:

方法描述
aask()用于从 LLM 请求补全的主要方法
acompletion()从 LLM 获取原始补全对象
acompletion_text()从 LLM 获取文本补全
_achat_completion()用于聊天补全的提供商特定实现
_achat_completion_stream()用于流式聊天补全的提供商特定实现

所有方法都是异步的,以便在与 LLM 服务通信时允许非阻塞 I/O。

来源: metagpt/provider/base_llm.py35-411

LLM 配置

LLMConfig 类提供了一种灵活的方式来配置 LLM 交互的各个方面。它包括:

OpenAI 的示例配置

来源: metagpt/configs/llm_config.py9-135

支持的 LLM 提供商

MetaGPT 通过其提供商系统支持广泛的 LLM 提供商

提供商LLM 类型模型
OpenAIOPENAIGPT-3.5, GPT-4 等。
AnthropicANTHROPIC, CLAUDEClaude 模型
AWS BedrockBEDROCKAmazon Titan, Claude, Mistral 等。
Google GeminiGEMINIGemini 模型
Baidu QianFanQIANFANERNIE 模型等。
Aliyun DashScopeDASHSCOPEQwen 模型等。
智谱 AIZHIPUAIGLM 模型
OllamaOLLAMA各种开源模型
Azure OpenAIAZUREAzure 托管的 OpenAI 模型
许多其他多种请参阅 LLMType 枚举

该系统是可扩展的,允许通过实现 BaseLLM 接口并通过 @register_provider 装饰器进行注册,轻松添加新的提供商。

来源: metagpt/provider/__init__.py1-39 metagpt/configs/llm_config.py19-46

Token管理和成本跟踪

MetaGPT 包含一个全面的系统,用于跟踪不同提供商和模型的令牌使用情况和成本。

令牌计数

令牌计数系统估算消息和补全中使用的令牌数量,允许:

  • 防止上下文窗口溢出
  • 计算成本
  • 根据需要进行消息压缩

成本管理

CostManager 类根据不同模型的定价跟踪令牌使用情况并计算成本。

来源: metagpt/utils/token_counter.py10-541 metagpt/provider/base_llm.py130-138

消息压缩

为了处理可能超出令牌限制的对话,MetaGPT 包含一个消息压缩系统。

来源: metagpt/provider/base_llm.py338-410

在 MetaGPT 中使用 LLM

要在 MetaGPT 应用程序中使用 LLM:

来源: metagpt/llm.py1-21 metagpt/provider/base_llm.py177-206

高级特性

多模态输入

一些提供商支持除文本提示外的图像输入。

来源: metagpt/provider/base_llm.py62-81

推理模式

一些提供商支持显式的推理能力。

来源: metagpt/configs/llm_config.py111-113 metagpt/provider/base_llm.py48-56

图像生成

像 OpenAI 这样的某些提供商支持图像生成。

来源: metagpt/provider/openai_api.py301-320 tests/metagpt/provider/test_openai.py132-141

实现自定义提供商

要向 MetaGPT 添加新的 LLM 提供商,您需要:

  1. 创建一个继承自 BaseLLM 的新类
  2. 实现必需的抽象方法
  3. 使用 @register_provider 装饰器注册提供商

示例结构

来源: metagpt/provider/openai_api.py57-327 metagpt/provider/anthropic_api.py14-86

总结

MetaGPT 中的 LLM 集成系统提供了一个灵活且可扩展的框架,用于与各种 LLM 提供商进行交互。其主要特点包括:

  • 基于提供商的架构,具有通用接口
  • 全面的配置选项
  • 支持广泛的 LLM 提供商
  • 令牌管理和成本跟踪
  • 用于处理令牌限制的消息压缩
  • 流式传输、多模态输入和推理等高级功能

这种模块化设计允许 MetaGPT 适应快速发展的 LLM 格局,同时为系统的其余部分保持一致的接口。