跳到主要内容

SDK 类型声明

AI

用于创建 AI 模型的类。

createModel()

创建指定的 AI 模型。

使用示例

const model = ai.createModel('hunyuan');

类型声明

function createModel(model: string): ChatModel;

返回一个实现了 ChatModel 抽象类的模型实例,该实例提供 AI 生成文本相关能力。

ChatModel

这个抽象类描述了 AI 生文模型类提供的接口。

generateText()

调用大模型生成文本。

使用示例

const hy = ai.createModel("hunyuan"); // 创建模型
const res = await hy.generateText({
model: "hunyuan-lite",
messages: [
{ role: "user", content: "你好,请你介绍一下李白" },
],
});
console.log(res.text) // 打印生成的文本

类型声明

function generateText(data: BaseChatModelInput): Promise<{  
rawResponse: any;
text: string;
}>

参数

参数名必填类型示例说明
dataBaseChatModelInput{model: "hunyuan-lite", messages: [{ role: "user", content: "你好,请你介绍一下李白" }]}参数类型定义为 BaseChatModelInput ,作为基础的入参定义。实际上各家大模型还会有各自独特的输入参数,开发者可按需根据实际使用的大模型官方文档传入其他不在此类型中被定义的参数,充分利用大模型提供的能力。其他参数会被透传至大模型接口, SDK 侧不对它们不做额外处理。

返回值

属性名类型示例说明
res.textstring"李白是一位唐朝诗人。"大模型生成的文本。
res.rawResponseobject{"choices": [{"finish_reason": "stop","message": {"role": "assistant", "content": "你好呀,有什么我可以帮忙的吗?"}}], "usage": {"prompt_tokens": 14, "completion_tokens": 9, "total_tokens": 23}}大模型的完整返回值,包含更多详细数据,如 token 使用情况相关字段。由于各家大模型返回值互有出入,请根据实际情况使用。

streamText()

以流式调用大模型生成文本。流式调用时,生成文本及其他响应数据会通过 SSE 返回,该接口的返回值对 SEE 做了不同程度的封装,开发者能根据实际需求获取到文本流、完整数据流和 SSE 流。

使用示例

const hy = ai.createModel("hunyuan"); // 创建模型
const res = await hy.streamText({
model: "hunyuan-lite",
messages: [
{ role: "user", content: "你好,请你介绍一下李白" },
],
});

for await (let str of res.textStream) {
console.log(str); // 打印生成的文本
}
for await (let data of res.dataStream) {
console.log(str); // 打印每次返回的数据
}
for await (let event of res.eventSourceStream) {
console.log(event); // 打印 SSE 数据
}

类型声明

function streamText(data: BaseChatModelInput): Promise<StreamTextResult>

参数

参数名必填类型示例说明
dataBaseChatModelInput{model: "hunyuan-lite", messages: [{ role: "user", content: "你好,请你介绍一下李白" }]}参数类型定义为 BaseChatModelInput ,作为基础的入参定义。实际上各家大模型还会有各自独特的输入参数,开发者可按需根据实际使用的大模型官方文档传入其他不在此类型中被定义的参数,充分利用大模型提供的能力。其他参数会被透传至大模型接口, SDK 侧不对它们不做额外处理。

返回值

属性名类型说明
res.textStreamReadableStream<string>以流式返回的大模型生成文本,可参考使用示例获取到生成的增量文本。
res.dataStreamReadableStream<object>以流式返回的大模型响应数据,可参考使用示例获取到生成的增量数据。由于各家大模型响应值互有出入,请根据实际情况合理使用。
res.eventSourceStreamReadableStream<object>以流式返回的完整 SSE 数据,可参考使用示例获取到每个 SSE 响应。由于各家大模型响应值互有出入,请根据实际情况合理使用。

示例

const hy = ai.createModel("hunyuan");
const res = await hy.streamText({
model: "hunyuan-lite",
messages: [
{ role: "user", content: "1+1结果是" },
],
});

// 文本流
for await (let str of res.textStream) {
console.log(str);
}
// 1
// 加
// 1
// 的结果
// 是
// 2
// 。

// 数据流
for await (let str of res.dataStream) {
console.log(str);
}
// {created: 1723013866, id: "a95a54b5c5d2144eb700e60d0dfa5c98", model: "hunyuan-lite", version: "202404011000", choices: Array(1), …}
// {created: 1723013866, id: "a95a54b5c5d2144eb700e60d0dfa5c98", model: "hunyuan-lite", version: "202404011000", choices: Array(1), …}
// {created: 1723013866, id: "a95a54b5c5d2144eb700e60d0dfa5c98", model: "hunyuan-lite", version: "202404011000", choices: Array(1), …}
// {created: 1723013866, id: "a95a54b5c5d2144eb700e60d0dfa5c98", model: "hunyuan-lite", version: "202404011000", choices: Array(1), …}
// {created: 1723013866, id: "a95a54b5c5d2144eb700e60d0dfa5c98", model: "hunyuan-lite", version: "202404011000", choices: Array(1), …}
// {created: 1723013866, id: "a95a54b5c5d2144eb700e60d0dfa5c98", model: "hunyuan-lite", version: "202404011000", choices: Array(1), …}
// {created: 1723013866, id: "a95a54b5c5d2144eb700e60d0dfa5c98", model: "hunyuan-lite", version: "202404011000", choices: Array(1), …}
// {created: 1723013866, id: "a95a54b5c5d2144eb700e60d0dfa5c98", model: "hunyuan-lite", version: "202404011000", choices: Array(1), …}

// SSE 流
for await (let str of res.eventSourceStream) {
console.log(str);
}
// {type: "event", id: undefined, event: undefined, data: "{"created":1723013866,"id":"a95a54b5c5d2144eb700e6…okens":6,"completion_tokens":1,"total_tokens":7}}"}
// {type: "event", id: undefined, event: undefined, data: "{"created":1723013866,"id":"a95a54b5c5d2144eb700e6…okens":6,"completion_tokens":2,"total_tokens":8}}"}
// {type: "event", id: undefined, event: undefined, data: "{"created":1723013866,"id":"a95a54b5c5d2144eb700e6…okens":6,"completion_tokens":3,"total_tokens":9}}"}
// {type: "event", id: undefined, event: undefined, data: "{"created":1723013866,"id":"a95a54b5c5d2144eb700e6…kens":6,"completion_tokens":4,"total_tokens":10}}"}
// {type: "event", id: undefined, event: undefined, data: "{"created":1723013866,"id":"a95a54b5c5d2144eb700e6…kens":6,"completion_tokens":5,"total_tokens":11}}"}
// {type: "event", id: undefined, event: undefined, data: "{"created":1723013866,"id":"a95a54b5c5d2144eb700e6…kens":6,"completion_tokens":6,"total_tokens":12}}"}
// {type: "event", id: undefined, event: undefined, data: "{"created":1723013866,"id":"a95a54b5c5d2144eb700e6…kens":6,"completion_tokens":7,"total_tokens":13}}"}
// {type: "event", id: undefined, event: undefined, data: "{"created":1723013866,"id":"a95a54b5c5d2144eb700e6…kens":6,"completion_tokens":7,"total_tokens":13}}"}
// {type: "event", id: undefined, event: undefined, data: "[DONE]"}

BaseChatModelInput

interface BaseChatModelInput {
messages: {
role: 'user' | 'system' | 'assistant'
content: string
}[];
model: string;
temperature?: number;
top_p?: number;
}