概述
大模型接入是什么
目前,国内外大模型发展火热,已经有多家公司推出了大模型服务,如腾讯混元、月之暗面、智谱清言等等。然而各家大模型的接入方法各有差异。因此,为了帮助开发者快速接入各家大模型,我们推出了大模型接入服务。通过使用 AI+ 模块提供的大模型服务,开发者们可以以一套简洁、统一的方式使用多家大模型。我们为开发者提供了 Web、小程序双端可用的 AI SDK ,做到一套代码多端、多模型适用。
如何启用大模型接入
可访问「微信云开发云后台 AI+」,选择接入 AI 大模型后,在已有的大模型列表中启用任一大模型。
启用大模型时,需要在大模型厂商处获取到调用模型的 key 或相关认证信息,并填写到大模型配置中。
各个可用模型的调用密钥、key 或相关认证信息,可以通过大模型的产品文档中了解到获取方法。
大模型启用后即可使用 AI SDK 在您的应用中接入大模型了。
有什么大模型可以被接入
目前支持接入的大模型列表包含:
也可访问「微信云开发云后台 AI+,在大模型列表中查看支持接入的大模型。
为什么要使用大模型接入
使用大模型接入服务可以提高为应用接入大模型的效率,不用被各家大模型的调用细节干扰,还可以在多家大模型之间快速切换使用。同时 AI SDK 提供了简洁的文本生成接口,并且支持流式调用。
多端适用、多大模型兼容的文本生成
AI SDK 支持在 Web 端和小程序端使用,并且提供了统一的对接多家大模型的接口。无论是运行在 Web 端还是小程序端,无所谓接入的是哪一家的大模型,都可以使用一套代码实现 AI 接入。
除了 SDK 支持之外,我们还开放了 HTTP API,发起 HTTP 请求即可接入大模型。
这里我们选择接入混元大模型,调用大模型生成介绍李白的文本,并且将结果打印出来。
const model = ai.createModel("hunyuan"); // 创建模型
const result = await model.generateText({
model: "hunyuan-lite",
messages: [{ role: "user", content: "你好,请你介绍一下李白" }],
});
console.log(result.text);
如果想切换到其他大模型,比如智谱清言,只需要修改 ai.createModel
传入的参数为 zhipu
,并且选择智谱清言的 glm-4
模型即可:
const model = ai.createModel("zhipu"); // 创建模型
const result = await model.generateText({
model: "glm-4",
messages: [{ role: "user", content: "你好,请你介绍一下李白" }],
});
console.log(result.text);
我们只修改了两处参数,就完成了接入大模型之间的切换!
易用的流式文本生成接口
AI SDK 提供了同样简洁的流式文本生成接口,这在需要与用户交互的场景十分有用,比如构建智能聊天机器人、流式展示长生成文本等等。
这里我们会试着将大模型流式返回的文本增量地添加到网页上:
const model = ai.createModel("hunyuan"); // 创建模型
const result = await model.streamText({
model: "hunyuan-lite",
messages: [{ role: "user", content: "你好,请你介绍一下李白" }],
});
for await (let str of result.textStream) {
document.body.innerText += str;
}
同样的简洁程度,我们完成了流式调用文本生成!
强大的工具调用支持
AI SDK 支持大模型工具调用。使用工具调用功能,可以增强模型推理效果或进行其他外部操作,包括信息检索、数据库操作、知识图谱搜索与推理、操作系统、触发外部操作等场景。
使用 AI SDK,只需几步即可完成工具调用:
- 定义工具
- 注册工具
- 告知大模型有哪些可用工具并与大模型进行对话
// 省略初始化 AI sdk 的操作...
// 1. 定义获取天气的工具,详见 FunctionTool 类型
const getWeatherTool = {
name: "get_weather",
description:
"返回某个城市的天气信息。调用示例:get_weather({city: '北京'})",
fn: ({ city }) => `${city}的天气是:秋高气爽!!!`, // 在这定义工具执行的内容
parameters: {
type: "object",
properties: {
city: {
type: "string",
description: "要查询的城市",
},
},
required: ["city"],
},
};
// 2. 注册我们刚定义好的工具
ai.registerFunctionTool(getPopulationTool);
// 3. 在给大模型发送消息的同时,告知大模型可用一个获取天气的工具
const model = ai.createModel("zhipu");
const result = await model.generateText({
model: "glm-4-flash",
tools: [getWeatherTool], // 这里我们传入了获取天气工具
messages: [
{
role: "user",
content: "请告诉我北京的天气状况"
}
]
})
console.log(result.text);
在简单地添加了三个步骤后,我们实现了带有工具调用功能的大模型接入。AI SDK 帮我们处理了以下内容:
- 解析大模型响应中的工具调用
- 执行对应的工具调用
- 将工具调用结果构造成新的消息再次发送给大模型
- 将最终结果返回给调用者