概述
提供云开发 AI 接入能力,快速接入大模型和 Agent。
基础使用示例
- 初始化配置
- 基础文本生成
- 流式文本生成
- Agent 对话
Publishable Key 可前往 云开发平台/API Key 配置 中生成
类型声明
function ai(): AI;
返回值
返回新创建的 AI 实例。
import cloudbase from "@cloudbase/js-sdk";
// 初始化
const app = cloudbase.init({
env: "your-env-id", // 替换为您的环境ID
region: "ap-shanghai", // 地域,默认为上海
accessKey: "", // 填入生成的 Publishable Key
});
// 如果填入了 accessKey,则不需要此步骤
await app.auth.signInAnonymously();
const ai = app.ai();
// 基础文本生成示例
async function generateText() {
const model = ai.createModel("cloudbase");
const result = await model.generateText({
model: "hy3",
messages: [{ role: "user", content: "你好,请你介绍一下李白" }],
});
console.log("生成的文本:", result.text);
console.log("消耗的token:", result.usage);
}
// 流式文本生成示例
async function streamText() {
const model = ai.createModel("cloudbase");
const result = await model.streamText({
model: "hy3",
messages: [{ role: "user", content: "1+1等于多少" }],
});
for await (let chunk of result.textStream) {
console.log("收到文本块:", chunk);
}
}
// Agent 对话示例
async function chatWithAgent() {
const res = await ai.bot.sendMessage({
botId: "botId-xxx",
msg: "你好,请介绍一下你自己",
history: [],
});
for await (let text of res.textStream) {
console.log("Agent 回复:", text);
}
}
AI
用于创建 AI 模型的类。
createModel
function createModel(model: string): ChatModel;
创建指定的 AI 模型。
- 创建一个新的 AI 模型实例
- 返回一个实现了 ChatModel 抽象类的模型实例
- 该实例提供 AI 生成文本 相关能力
参数
model
string
模型标识符,如 'cloudbase'
返回
ChatModel
ChatModel
实现了 ChatModel 抽象类的模型实例,提供 AI 生成文本相关能力
示例
- 基础使用
const model = ai.createModel("cloudbase");
createImageModel
function createImageModel<T extends "hunyuan-image" | (string & {})>(
provider: T
): ImageModel;
创建指定的 AI 图像生成模型。
- 创建一个新的图像生成模型实例
- 返回一个
ImageModel实例,提供generateImage等图像生成能力 provider为模型提供方标识,如'hunyuan-image'
注意
图片生成功能依赖 @cloudbase/js-sdk v3.6.0 或更高版本,且仅限在服务端环境(Node.js)中使用。
参数
provider
string
模型提供方标识,如 'hunyuan-image'
返回
ImageModel
ImageModel
图像生成模型实例,提供 generateImage 等图像生成能力
示例
- 基础使用
const imageModel = ai.createImageModel("hunyuan-image");
const res = await imageModel.generateImage({
model: "HY-Image-3.0-Plus-4090-Tob-v1.0",
prompt: "一只胖胖的橘猫坐在窗台上打盹,水彩风格,温暖色调",
size: "1024x1024",
revise: { value: true },
});
console.log(res.data[0].url); // 图片 URL,24 小时有效
console.log(res.data[0].revised_prompt); // 改写后的 prompt
创建的模型实例上挂载了 generateImage 方法,用于生成图片。
generateImage
function generateImage(
input: HunyuanARGenerateImageInput
): Promise<HunyuanARGenerateImageOutput>;
调用图像生成能力,根据输入的 model 自动选择对应的生成子路径。
参数
input
object
图像生成参数对象
返回
id
string
此次请求的 id
created
number
unix 时间戳
data
Array<object>
返回的图片生成内容
示例
- 文生图
- 图生图
const imageModel = ai.createImageModel("hunyuan-image");
const res = await imageModel.generateImage({
model: "HY-Image-3.0-Plus-4090-Tob-v1.0",
prompt: "赛博朋克风格的未来城市夜景 ,霓虹灯光,雨夜",
size: "768x1024",
seed: 42,
footnote: "Generated by Cloudbase",
revise: { value: true },
});
console.log(res.data[0].url);
const imageModel = ai.createImageModel("hunyuan-image");
const res = await imageModel.generateImage({
model: "HY-Image-v3.0-I2I-ToB-v1.0.1",
prompt: "将商品放置在温暖的木质桌面上,柔和自然光",
image_urls: ["https://example.com/product.png"],
revise: { value: true },
});
console.log(res.data[0].url);
更多用法可参考 混元生图 JS SDK 调用。
bot
挂载了 Bot 类的实例,上面集合了一系列与 Agent 交互的方法。具体可参考 Bot 类 的详细文档。
使用示例
const agentList = await ai.bot.list({ pageNumber: 1, pageSize: 10 });
registerFunctionTool
function registerFunctionTool(functionTool: FunctionTool): void;
注册函数工具。在进行大模型调用时,可以告知大模型可用的函数工具,当大模型的响应被解析为工具调用时,会自动调用对应的函数工具。
参数
functionTool
FunctionTool
要注册的函数工具定义
返回
void
undefined
无返回值
示例
- 基础工具注册
- 多工具集成系统
- 动态工具管理
// 定义获取天气的工具
const getWeatherTool = {
name: "get_weather",
description: "返回某个城市的天气信息。调用示例:get_weather({city: '北京'})",
fn: ({ city }) => `${city}的天气是:秋高气爽!!!`,
parameters: {
type: "object",
properties: {
city: {
type: "string",
description: "要查询的城市",
},
},
required: ["city"],
},
};
// 注册工具
ai.registerFunctionTool(getWeatherTool);
// 使用工具进行对话
const model = ai.createModel("cloudbase");
const result = await model.generateText({
model: "hy3",
tools: [getWeatherTool],
messages: [
{
role: "user",
content: "请告诉我北京的天气状况",
},
],
});
console.log(result.text);
// 多工具集成系统
class ToolIntegrationSystem {
private registeredTools: Map<string, FunctionTool> = new Map();
// 注册多个工具
registerTools(tools: FunctionTool[]): void {
tools.forEach((tool) => {
ai.registerFunctionTool(tool);
this.registeredTools.set(tool.name, tool);
console.log(`✓ 工具注册成功: ${tool.name}`);
});
}
// 获取所有可用工具
getAvailableTools(): FunctionTool[] {
return Array.from(this.registeredTools.values());
}
// 智能对话助手
async smartAssistant(question: string): Promise<string> {
const model = ai.createModel("cloudbase");
const result = await model.generateText({
model: "hy3",
tools: this.getAvailableTools(),
messages: [
{
role: "user",
content: question,
},
],
});
return result.text;
}
// 工具使用统计
getToolUsageStats(): Map<string, number> {
const stats = new Map<string, number>();
// 在实际应用中,这里可以记录工具调用次数
return stats;
}
}
// 定义多个工具
const tools = [
{
name: "get_weather",
description: "获取城市天气信息",
fn: ({ city }) => `${city}的天气:晴,25℃`,
parameters: {
type: "object",
properties: { city: { type: "string", description: "城市名称" } },
required: ["city"],
},
},
{
name: "calculate",
description: "执行数学计算",
fn: ({ expression }) => `计算结果:${eval(expression)}`,
parameters: {
type: "object",
properties: { expression: { type: "string", description: "数学表达式" } },
required: ["expression"],
},
},
{
name: "search_info",
description: "搜索信息",
fn: ({ keyword }) => `搜索结果:关于${keyword}的信息`,
parameters: {
type: "object",
properties: { keyword: { type: "string", description: "搜索关键词" } },
required: ["keyword"],
},
},
];
// 使用示例
const toolSystem = new ToolIntegrationSystem();
toolSystem.registerTools(tools);
// 智能对话
const answer = await toolSystem.smartAssistant(
"计算一下 15*8+20 的结果,并告诉我北京的天气"
);
console.log("助手回答:", answer);
// 动态工具管理系统
class DynamicToolManager {
private toolRegistry: Map<string, FunctionTool> = new Map();
// 动态注册工具
registerTool(tool: FunctionTool): void {
ai.registerFunctionTool(tool);
this.toolRegistry.set(tool.name, tool);
console.log(`工具注册: ${tool.name}`);
}
// 动态卸载工具
unregisterTool(toolName: string): boolean {
if (this.toolRegistry.has(toolName)) {
this.toolRegistry.delete(toolName);
console.log(`工具卸载: ${toolName}`);
return true;
}
return false;
}
// 根据上下文动态选择工具
async contextualAssistant(
context: string,
question: string
): Promise<string> {
const relevantTools = this.selectRelevantTools(context, question);
const model = ai.createModel("cloudbase");
const result = await model.generateText({
model: "hy3",
tools: relevantTools,
messages: [
{
role: "system",
content: `当前上下文:${context}`,
},
{
role: "user",
content: question,
},
],
});
return result.text;
}
// 根据上下文选择相关工具
private selectRelevantTools(
context: string,
question: string
): FunctionTool[] {
const tools = Array.from(this.toolRegistry.values());
// 简单的关键词匹配算法
const keywords = [...context.split(" "), ...question.split(" ")];
return tools.filter((tool) => {
return keywords.some((keyword) =>
tool.description.toLowerCase().includes(keyword.toLowerCase())
);
});
}
// 热更新工具
updateTool(toolName: string, updatedTool: FunctionTool): boolean {
if (this.toolRegistry.has(toolName)) {
this.unregisterTool(toolName);
this.registerTool(updatedTool);
console.log(`工具更新: ${toolName}`);
return true;
}
return false;
}
// 获取工具列表
listTools(): string[] {
return Array.from(this.toolRegistry.keys());
}
}
// 使用示例
const toolManager = new DynamicToolManager();
// 注册初始工具
toolManager.registerTool({
name: "weather",
description: "获取天气信息",
fn: ({ city }) => `${city}天气:晴`,
parameters: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"],
},
});
// 动态添加新工具
toolManager.registerTool({
name: "translate",
description: "翻译文本",
fn: ({ text, to }) => `${text} 翻译为 ${to}:示例翻译结果`,
parameters: {
type: "object",
properties: {
text: { type: "string" },
to: { type: "string" },
},
required: ["text", "to"],
},
});
// 上下文感知对话
const answer = await toolManager.contextualAssistant(
"天气和翻译相关的问题",
"把'你好'翻译成英语,并告诉我上海的天气"
);
console.log("智能回答:", answer);
// 查看可用工具
console.log("可用工具:", toolManager.listTools());