LLMCaller参考

本节是参考性质的速查手册,不是教程,大家只需有所了解即可。

LLMCaller是一个通用的OpenAI兼容API接口调用类,支持所有主流大语言模型,零依赖外部SDK,完全基于原生 HTTP 请求,极其轻量易用。

本节列出了LLMCaller的全部属性/方法供参考。

构造函数

使用LLMCaller之前,首先要构造LLMCaller。

LLMCaller提供了四种构造函数,分别是:

New()

New(BaseUrl)

New(BaseUrl,model)

New(BaseUrl,model,ApiKey) '最常用

参数 说明
BaseUrl 大模型接入地址,如: https://api.deepseek.com/chat/completions
model 大模型名称,如:deepseek-flash
ApiKey API密钥,LLMCaller 内部实际使用的授权格式是 "Bearer 你的ApiKey",类内部会自动判断 ApiKey 是否以 "Bearer " 为前缀,如果不是,会自动拼上 "Bearer "。

连接与对话管理属性

下表是LLMCaller类的自身属性,用于连接与对话管理,不会写入请求体:

属性名 类型 说明
BaseUrl String 大模型接入地址,必填,一般通过构造函数设置。如: https://api.deepseek.com/chat/completions
ApiKey String API密钥,必填,一般通过构造函数设置。LLMCaller 内部实际使用的授权格式是 "Bearer 你的ApiKey",类内部会自动判断 ApiKey 是否以 "Bearer " 为前缀,如果不是,会自动拼上 "Bearer "。

所以下面两行代码其实是等效的:

caller.ApiKey = "sk-a734b83536da45e9aedc3e42605bfb3a" '无前缀,类内部会自动补上 "Bearer "前缀
caller.ApiKey = "Bearer sk-a734b83536da45e9aedc3e42605bfb3a" '有前缀
Messages JArray 对话历史(上下文),引用传递。 设置后则进入多轮对话模式,不设置则进入单轮对话模式
UserMessage String/JArray 本轮用户问题,必填
SystemPrompt String 系统提示词,仅当Messages为空时生效(首轮或单轮)
Tools JArray 工具定义集合
ToolExecutor Func(Of String, JObject, String) 执行工具调用的回调函数。参数:(工具名, 参数对象) → 返回:执行结果字符串
SSEStreamHandler Action(Of String, String) 接收流式分片数据的回调方法。参数:(类型, 内容),类型为 "think"/"answer"/"error",think 为推理过程,answer 为正式回答,error 为错误信息
MaxToolSteps Integer 工具调用最大轮数,默认 10,防止死循环
Headers JObject 自定义 HTTP 请求头。用于添加 LLM 特有的请求头(如 Azure OpenAI 的 api-key 头)


访问请求方法与结果属性

方法/属性名 类型 说明
GetResult Boolean 方法,同步获取API请求结果,成功返回True,失败返回False
GetResultAsync Task(Of Boolean) 方法,异步获取API请求结果,成功返回True,失败返回False,需要结合Await使用
Cancel 无 方法,在使用SSE流式输出的情景时,可以通过执行此方法中断API接口调用
Result String 属性,调用成功后,返回 AI 响应的纯文本
Think String 属性,调用成功后,返回AI的推理过程
ResultJObject JObject 属性,调用成功后,返回完整的 API 响应对象
Error String 属性,调用失败时,返回错误描述
GetRequestBody String 方法,返回请求体的JSON字符串,一般用于专业开发人员的调试分析。
KeepReasoningInHistory Boolean 属性,在多轮对话情景中,是否将推理过程传递给下一轮
KeepToolCallsInHistory Boolean 属性,在多轮对话情景中,是否将自定义工具的调用细节和调用结果传递给下一轮

OpenAI标准参数属性

下表是LLMCaller的OpenAI标准参数属性,名称和大小写与OpenAI保持一致,会写入请求体。

需要注意的是,
大多数模型实际支持的参数远少于 OpenAI 标准定义的参数,所以开发的时候,需要查阅官方API文档,得到该模型所支持的参数,否则意外使用了该大模型不支持的参数,可能会导致请求失败。

下表中前三个参数
model、stream、response_format是比较常用的,后面的章节会专门介绍;对于大多数用户来说,作为
非专业AI开发人员,其他参数是基本用不着的,所以本文档不做介绍。

属性名 类型 说明
model String 模型名称,必填,一般通过构造函数设置
stream Boolean 是否开启 SSE 流,常用。需配合SSEStreamHandler使用
response_format JObject 输出格式:{"type": "json_object"} 或 {"type": "json_schema", "json_schema": {...}},常用
temperature Double? 随机性,0~2。部分推理模型不支持
top_p Double? 核采样,0~1。部分推理模型不支持
max_completion_tokens Integer? 生成 token 上限(OpenAI 推荐,o 系模型必用)
max_tokens Integer? 生成 token 上限(OpenAI 已弃用,国内平台普遍使用;o 系模型静默忽略)
n Integer? 一次生成几个候选回答(多数国内模型不支持)
seed Integer? 随机种子,尽力复现
stop JArray 停止序列,最多 4 个
presence_penalty Double? 存在惩罚(鼓励新话题),-2.0~2.0
frequency_penalty Double? 频率惩罚(减少逐字重复)
logprobs Boolean? 是否返回 token 对数概率
top_logprobs Integer? 每个位置返回的候选数,0~20,需 logprobs=True
logit_bias JObject 按 token ID 压制
user String 终端用户标识,用于平台风控;部分国内平台(如 DeepSeek、智谱、Qwen)使用 user_id 作为终端用户标识,具体以各平台文档为准,可通过 extra_body 设置
tool_choice String 工具行为:"auto"/"none"/"required"
parallel_tool_calls Boolean? 是否允许一轮并发多个工具调用
stream_options JObject 流式选项,如 {"include_usage": true}
service_tier String 服务层级
store Boolean? 是否存储输出用于蒸馏
metadata JObject 附加元数据,最多 16 对键值
verbosity String 回答详细程度,仅 GPT-5 系
reasoning_effort String 推理强度:OpenAI 为 none~xhigh;DeepSeek 为 low/high/max

方言参数属性

OpenAI 标准以外的模型专有参数统一通过 extra_body 属性设置。

属性名 类型 说明
extra_body ExpandoObject 方言参数,OpenAI标准以外的模型专有参数统一通过"extra_body"属性设置。

extra_body为ExpandoObject类型,可以随心扩展属性:

Dim clr As New LLMCaller()
clr.extra_body.thinking = New JObject() From {{"type", "disabled"}} ' DeepSeek/GLM 专有,用于关闭思维模式
clr.extra_body.top_k = 50 '部分模型专有,如 DeepSeek、Anthropic 等
clr.extra_body.user_id = "foxtable" '部分国内平台(如 DeepSeek、智谱、Qwen)使用 user_id 作为终端用户标识


extra_body 中的属性在最终发送 HTTP 请求时,会平级合并到 JSON 请求体的顶层,而不是嵌套在 extra_body 字段下。例如,设置 clr.extra_body.thinking = ... 后,实际请求体为:

{
  "model": "...",
  "messages": [...],
  "thinking": { "type": "disabled" },
  "
top_k": 50,
  "user_id": "your_user_id"
}

extra_body的存在,确保了LLMCaller能兼容未来,因为除了各大模型专有参数外,未来OpenAI如果新增标准参数,而LLMCaller未及同步更新,你可以直接通过extra_body设置新增参数。

token预估与上下文清理

方法 类型 说明
EstimateTokenCount Integer 方法,用于粗略预估指定字符串的token数,语法:

EstimateTokenCount(content,cnWeight, enWeight)

content: 要计算token的字符串
cnWeight:可选参数,用于指定一个中文字符对应的token数,默认为0.6
enWeight:可选参数,用于指定一个英文文字符对应的token数,默认为0.3

提示:EstimateTokenCount只是粗略估算,且偏保守,也就是计算出来的token数通常比实际的token数高。
TrimMessages 无

用于按轮次清理上下文,只保留最近的若干轮对话。其语法为:

TrimMessages(n)

n:整数型,要保留的最近轮数,在此之前的对话内容会被删除。


本页地址:http://www.foxtable.com/webhelp/topics/7201.htm