菜单

语言模型

相关源文件

本文档介绍了 Open Interpreter 中的语言模型集成系统,解释了不同 LLM 如何连接、配置和用于生成代码和文本响应。它涵盖了托管的云模型和本地模型,以及用于处理消息和模型功能的内部架构。

有关特定配置设置的信息,请参阅 设置参考

架构概述

Open Interpreter 中的语言模型系统充当应用程序的“大脑”,负责理解用户请求并生成要执行的代码。它被设计为灵活的,支持多个模型提供商,同时向应用程序的其余部分提供统一的接口。

来源

核心组件

Llm 类

The Llm 类是负责与语言模型接口的核心组件。它由 OpenInterpreter 类实例化,并处理所有模型交互。

The Llm 类的主要职责

  • 模型配置和加载
  • 功能检测(视觉、函数调用)
  • 消息格式转换
  • 上下文窗口管理
  • 将响应流式传输到解释器

来源

LiteLLM 集成

Open Interpreter 使用 LiteLLM 作为抽象层来与各种语言模型提供商进行交互。这允许提供一致的接口,同时支持多个后端。

来源

模型支持

Open Interpreter 支持多种语言模型,包括云托管和本地模型

云托管模型

Open Interpreter 无缝集成了流行的云端 LLM 提供商

提供商模型配置
OpenAIGPT-4o、GPT-4 等model = "gpt-4o"
AnthropicClaude 3.5、Claude 3 Opus/Sonnet/Haikumodel = "claude-3-5-sonnet-20240620"
Azure OpenAI取决于部署设置 api_baseapi_version
Open Interpreter API"i"model = "i"

模型通过 Llm 类的 model 属性进行配置

来源

本地模型

本地模型支持对于离线使用和注重隐私的应用程序至关重要

提供商配置备注
Ollamamodel = "ollama/model-name"自动下载缺少的模型
Llamafile自定义端点通过 api_base 配置
LM Studio自定义端点通过 api_base 配置
Jan.ai自定义端点通过 api_base 配置

Ollama 的示例配置

来源

消息处理管道

当 Open Interpreter 需要生成响应时,它会通过几个阶段处理消息

消息格式转换

Open Interpreter 使用内部消息格式 (LMC),在发送给 LLM 之前需要将其转换为 OpenAI 兼容格式

关键转换包括

  • 将代码块转换为函数调用,用于函数调用模型
  • 处理图像内容,用于支持视觉的模型
  • 应用消息模板以实现一致的提示

来源

上下文窗口管理

The Llm 类负责将消息放入模型的上下文窗口

这确保了

  1. 消息适合模型限制
  2. 为模型响应保留空间
  3. 保留最相关的上下文

来源

函数和工具调用

函数调用是一项关键功能,它允许语言模型生成结构化的输出以进行代码执行。

工具模式

Open Interpreter 定义了一个执行工具模式

此模式定义了模型用于生成可执行代码的接口。

来源

处理函数调用

The run_tool_calling_llm 函数处理使用工具/函数调用 API 的模型响应

此过程

  1. 累积 LLM 的部分块
  2. 提取语言和代码信息
  3. 以解释器期望的 LMC 格式发出块

来源

视觉支持

Open Interpreter 支持具有视觉能力的模型,允许它们处理图像内容

视觉检测和处理

对于不支持视觉的模型,Open Interpreter 可以使用本地视觉 API 来生成图像描述。

来源

图像处理

对于支持视觉的模型,图像会被正确格式化,并可能进行调整大小

来源

配置与设置

The Llm 类提供了许多配置选项

设置描述默认
modelLLM 标识符"gpt-4o"
temperature响应随机性0
context_windowToken 限制自动检测
max_tokens最大响应长度自动计算
api_baseAPI 端点 URL提供商默认
api_key身份验证密钥环境变量
支持视觉视觉能力自动检测
支持函数函数调用能力自动检测

配置示例

来源

异步操作

Open Interpreter 通过 AsyncInterpreter 类支持异步 LLM 交互

这使得

  • 用于实时交互的 WebSocket 流式传输
  • 基于服务器的部署
  • 长时间运行的操作而不阻塞

来源

最佳实践

模型选择

  • 对于复杂的任务,请使用 gpt-4o 或其他高级模型
  • ollama/codestral 这样的本地模型对于许多编程任务都很有效
  • 考虑为视觉或复杂推理任务使用更强大的模型

优化本地模型

本地模型通常受益于额外的指导

来源

上下文窗口管理

  • 请注意模型的上下文限制,尤其是对于本地模型
  • 使用适当的 context_windowmax_tokens 设置
  • 考虑对大文件或数据集进行分块处理

错误处理

LLM 系统包含多种错误处理机制

这种方法

  1. 尝试使用不同的配置进行多次尝试
  2. 优雅地处理身份验证问题
  3. 提供信息性的错误消息

来源

结论

Open Interpreter 中的语言模型系统为云托管和本地 LLM 提供了一个灵活、强大的接口。其架构在易用性和高级功能(如函数调用和视觉支持)之间取得了平衡,同时保持了与各种模型提供商的兼容性。