跳转到主要内容
没人想看 output = client.chat.completions.create(...).choices[0].message.content
HeavenBase 通过 OpenAI 兼容入口 (Gateway) 路由 LLM 调用。默认 provider 为 OpenRouter,只需一个 API 密钥即可访问大多数主流模型。 模型选择不会出现在你的代码里。你引用 preset——普通聊天 preset 决定模型与行为,heavenbase.llm.default_provider 决定该模型由谁提供服务。显式的 provider= 参数或 preset 上的 provider 固定仍会覆盖默认 provider。

1. 设置 API 密钥

HeavenBase 内置了这些 provider 的配置。设置相应的环境变量,或使用 hb cfg set
若你仍有旧配置将 preset 的 provider 写死,请先取消设置,以便 default_provider 生效:
你也可以手动为任意 OpenAI 兼容 provider 设置 hb cfg set heavenbase.llm.providers.<provider>.base_url;若 provider 不使用标准环境变量,还可设置 hb cfg set heavenbase.llm.providers.<provider>.api_key。本地 provider(ollamalmstudiovllm)也接受 provider 专属的模型 ID;精选条目 qwen3.6-flash 会映射到各本地 provider 已配置的名称。 任何 LiteLLM 兼容 provider 均可通过配置添加。完整 provider 与模型目录见 LLM 概述

2. CLI 对话

发送一条消息。默认使用 chat preset,在你配置的 default_provider 上以 deepseek-v4-flash 运行(开箱默认为 openrouter):
--preset 覆盖 preset:
选项:
  • --preset / -p:使用命名 preset(systemchatreasoncoderembedembed-local 等)
  • --model / -m:覆盖模型(ds-flashsonnetgpt 等支持规范模型名或已定义别名)
  • --provider / -b:覆盖 provider(openrouteropenaianthropic 等)
  • --verbose / -v:显示解析后的 LLM 规格,含 model、provider、gateway、args 等
  • --input / -i:从文件读取 prompt
chat preset 供 hb llm chathb llm session 使用。默认 hb.LLM()(无 preset)使用 system,面向简短编排调用的轻量 preset。embed preset 控制 hb llm embed,默认模型为 text-embedding-3-small;若默认 provider 不提供嵌入,请设置 heavenbase.llm.presets.embed.provider

3. CLI 嵌入

embed preset 默认为 text-embedding-3-small(1536 维)。除非你为嵌入固定 provider,否则使用你的 default_provider 配置嵌入 provider 与聊天类似,只需设置 embed preset 的 provider 与 model。
返回完整原始嵌入数组:
仅需紧凑预览时传入 --preview。预览模式显示前 4 个与后 2 个值,保留 6 位小数:
需要含 usage 的完整响应对象时传入 --json--json --preview 保留相同键,但将 embeddings 替换为缩写字符串:
若希望将输出复制到剪贴板,可在 hb llm chathb llm embed 上使用 --copy / -cp

4. 交互式会话

启动多轮会话:
会话使用 chat preset。在 >>> 提示符下输入消息。示例:
斜杠命令:/help/save <path>/load <path>/clear/regen <seed>/back/tools/mcp/exit 在会话中挂载 MCP 工具,请参阅快速入门中的 首个 MCP 章节。

5. Python API

5.1. LLM

hb.LLMhb llm CLI 背后的 Python API。无参构造使用 system preset;也可传入 preset、model、provider、gateway 或请求默认值:
LLM 构造函数接受 presetmodelprovidergateway,以及 temperaturemax_tokensseed 等额外关键字参数。额外关键字会成为 provider 请求默认值。对普通聊天 preset,model 来自 heavenbase.llm.presets.<name>.model,provider 来自 heavenbase.llm.default_provider,除非 preset 显式固定了 provider。
再调用与操作匹配的方法:

5.2. LLM 入口 (Gateway)

gateway 是 HeavenBase 在解析 preset、model 与 provider 之后用于发送请求的传输适配器。provider 决定模型由谁提供;gateway 决定请求如何发送。 HeavenBase 支持六种 gateway 键: heavenbase.llm.default_gateway 默认为 openai。仅当调用、preset 或 provider 未固定 gateway 时才会使用。可用 hb cfg set heavenbase.llm.default_gateway <gateway> 全局设置,或用 hb.LLM(..., gateway="...") 为单个实例覆盖。 chat preset 会解析为通过 openrouter provider 的 deepseek-v4-flash,除非你更改 preset 的 model 或 provider。因 OpenRouter 提供 OpenAI 兼容 API,默认 openai gateway 可直接使用 hb.LLM(preset="chat")

5.3. 导出客户端

OpenAI 兼容的 LLM 实例可导出原始 openai.OpenAIopenai.AsyncOpenAI 客户端。导出的客户端携带已解析的客户端构造设置:API 密钥、base URL、headers、超时与重试策略。它不会经过 HeavenBase 的 chat、stream、嵌入或图像辅助方法。 to_client()to_aclient() 获取 SDK 客户端;用 to_args() 获取已解析的请求参数,含面向 provider 的 model 名称与请求默认值。当外部 SDK 拥有调用循环、而你仍希望 HeavenBase 负责 model、provider、gateway 与凭据解析时,这种拆分很有用。
to_client()to_aclient()to_args() 用于 OpenAI 兼容客户端导出:openaiportkeybifrost。对 litellmanthropicmock gateway 会抛出 ValueError。OpenAI Agents SDK 标签页是一种集成模式;运行前请先安装 openai-agents
对原生 Anthropic gateway,请改为导出 anthropic.Anthropicanthropic.AsyncAnthropic 客户端:
OpenAI 兼容的 chat completions 使用 POST /v1/chat/completions,请求字段如 modelmessages,响应围绕 choices[0].message.content 与 token usage 字段组织。Anthropic 兼容聊天使用 POST /v1/messages,请求字段如 modelmax_tokensmessages,以及可选的顶层 system,响应围绕类型化 content block、stop_reason,以及 usage.input_tokens / usage.output_tokens 组织。

进一步探索

相关资源: