本文档介绍了 Open Interpreter 中的语言模型集成系统,解释了不同 LLM 如何连接、配置和用于生成代码和文本响应。它涵盖了托管的云模型和本地模型,以及用于处理消息和模型功能的内部架构。
有关特定配置设置的信息,请参阅 设置参考。
Open Interpreter 中的语言模型系统充当应用程序的“大脑”,负责理解用户请求并生成要执行的代码。它被设计为灵活的,支持多个模型提供商,同时向应用程序的其余部分提供统一的接口。
来源
The Llm 类是负责与语言模型接口的核心组件。它由 OpenInterpreter 类实例化,并处理所有模型交互。
The Llm 类的主要职责
来源
Open Interpreter 使用 LiteLLM 作为抽象层来与各种语言模型提供商进行交互。这允许提供一致的接口,同时支持多个后端。
来源
Open Interpreter 支持多种语言模型,包括云托管和本地模型
Open Interpreter 无缝集成了流行的云端 LLM 提供商
| 提供商 | 模型 | 配置 |
|---|---|---|
| OpenAI | GPT-4o、GPT-4 等 | model = "gpt-4o" |
| Anthropic | Claude 3.5、Claude 3 Opus/Sonnet/Haiku | model = "claude-3-5-sonnet-20240620" |
| Azure OpenAI | 取决于部署 | 设置 api_base 和 api_version |
| Open Interpreter API | "i" | model = "i" |
模型通过 Llm 类的 model 属性进行配置
来源
本地模型支持对于离线使用和注重隐私的应用程序至关重要
| 提供商 | 配置 | 备注 |
|---|---|---|
| Ollama | model = "ollama/model-name" | 自动下载缺少的模型 |
| Llamafile | 自定义端点 | 通过 api_base 配置 |
| LM Studio | 自定义端点 | 通过 api_base 配置 |
| Jan.ai | 自定义端点 | 通过 api_base 配置 |
Ollama 的示例配置
来源
当 Open Interpreter 需要生成响应时,它会通过几个阶段处理消息
Open Interpreter 使用内部消息格式 (LMC),在发送给 LLM 之前需要将其转换为 OpenAI 兼容格式
关键转换包括
来源
The Llm 类负责将消息放入模型的上下文窗口
这确保了
来源
函数调用是一项关键功能,它允许语言模型生成结构化的输出以进行代码执行。
Open Interpreter 定义了一个执行工具模式
此模式定义了模型用于生成可执行代码的接口。
来源
The run_tool_calling_llm 函数处理使用工具/函数调用 API 的模型响应
此过程
来源
Open Interpreter 支持具有视觉能力的模型,允许它们处理图像内容
对于不支持视觉的模型,Open Interpreter 可以使用本地视觉 API 来生成图像描述。
来源
对于支持视觉的模型,图像会被正确格式化,并可能进行调整大小
来源
The Llm 类提供了许多配置选项
| 设置 | 描述 | 默认 |
|---|---|---|
model | LLM 标识符 | "gpt-4o" |
temperature | 响应随机性 | 0 |
context_window | Token 限制 | 自动检测 |
max_tokens | 最大响应长度 | 自动计算 |
api_base | API 端点 URL | 提供商默认 |
api_key | 身份验证密钥 | 环境变量 |
支持视觉 | 视觉能力 | 自动检测 |
支持函数 | 函数调用能力 | 自动检测 |
配置示例
来源
Open Interpreter 通过 AsyncInterpreter 类支持异步 LLM 交互
这使得
来源
gpt-4o 或其他高级模型ollama/codestral 这样的本地模型对于许多编程任务都很有效本地模型通常受益于额外的指导
来源
context_window 和 max_tokens 设置LLM 系统包含多种错误处理机制
这种方法
来源
Open Interpreter 中的语言模型系统为云托管和本地 LLM 提供了一个灵活、强大的接口。其架构在易用性和高级功能(如函数调用和视觉支持)之间取得了平衡,同时保持了与各种模型提供商的兼容性。