大模型接入基础
Foxtable有个LLMCaller类,专门用于调用大模型的API接口。
LLMCaller是一个通用的OpenAI兼容API接口调用类,支持所有主流大语言模型,零依赖外部SDK,完全基于原生HTTP请求,极其轻量易用。
本文档的大模型接入示例均基于DeepSeek的API接口,
也可随时切换到其他大模型,
且代码几乎不用修改。
首先你要访问DeepSeek开放平台,注册账户,并创建自己的APIKey(密钥),并充值
少量金额。
网址为:
https://platform.deepseek.com
DeepSeek的API文档地址:
https://api-docs.deepseek.com/zh-cn/
第一次访问
下面开始我们的第一次DeepSeek大模型接口调用,请在命令窗口执行,记得在执行前将密钥替换为自己的:
Dim
caller
As
New
LLMCaller("https://api.deepseek.com/chat/completions",
"deepseek-flash",
"sk-a734b83536da45e9aedc3e42605bfb3a")
'指定接入地址、模型名称和密钥
caller.UserMessage =
"请写一首睹月思人的七言诗"
'用户问题
If
caller.GetResult()
Then
MessageBoxA.Show(caller.Result)
'显示答案
Else
MessageBoxA.Show(caller.Error)
'如果有错误,则显示错误信息
End
If
不出意外的话,执行上述代码后,DeepSeek会给你写出一首还不错的诗。
通过LLMCaller访问大模型
的基本步骤为:
1、构造LLMCaller时指定大模型接入地址(BaseUrl)、模型名称(model)、密钥(ApiKey)
2、设置用户问题(UserMessage)
3、通过GetResult发起请求
4、如果GetResult返回True,表示请求成功,则显示答案
5、如果GetResult返回False,表示请求失败,则显示错误信息
重要提示
上述示例要正确执行的前提是:
1、必须在DeepSeek平台注册账户,并创建自己的ApiKey,用于替换示例代码中的红色部分,如果ApiKey不正确,将提示错误:请求失败,状态码:401,状态描述:Authorization
Required
2、必须给你的DeepSeek账户充值,如果余额不足,将提示错误:请求失败,状态码:402,状态描述:Payment
Required
设置系统提示词
除了前面用到的 BaseUrl、model、ApiKey 和 UserMessage 这
4 个必要属性外,还有一个非常常用的属性 SystemPrompt,用于设置系统角色(提示词)。
例如:
Dim
caller
As
New
LLMCaller()
caller.BaseUrl =
"https://api.deepseek.com/chat/completions"
caller.ApiKey =
"sk-a734b83536da45e9aedc3e42605bfb3a"
'请替换为自己的DeepSeek密钥
caller.model =
"deepseek-flash"
caller.SystemPrompt =
"你是唐朝诗人李白,风格飘逸豪迈"
'设置系统提示词(系统角色)
caller.UserMessage =
"请写一首睹月思人的七言唐诗"
If
caller.GetResult()
Then
MessageBoxA.Show(caller.Result)
Else
MessageBoxA.Show(caller.Error)
End
If
在命令窗口执行上述代码,不出意外的话,会给你写一首有李白豪迈之风的七言唐诗。
获取请求体
当我们调用GetResult方法发起API接口访问请求时,LLMCaller传递给API接口的是一个JSON格式请求体。
通过查看请求体,你可以确认 LLMCaller 生成的 JSON 是否符合预期,特别在调试多轮对话、工具调用、图片输入等功能时非常有用。
例如在命令窗口执行:
Dim
caller
As
New
LLMCaller("https://api.deepseek.com/chat/completions",
"deepseek-flash",
"sk-a734b83536da45e9aedc3e42605bfb3a")
caller.SystemPrompt =
"你是唐朝诗人李白,风格飘逸豪迈"
caller.UserMessage =
"请写一首睹月思人的七言唐诗"
Dim
body
As
String
= caller.GetRequestBody()
'获取请求体
MessageBoxA.Show(body)
可以看到生成的请求体为:
{
"model": "deepseek-flash",
"messages": [
{
"role": "system",
"content": "你是唐朝诗人李白,风格飘逸豪迈"
},
{
"role": "user",
"content": "请写一首睹月思人的七言唐诗"
}
]
}