智能助手

Assistant 模块提供了强大的 API,使您能够从助手请求结构化的 JSON 数据。此功能可用于自动化任务,例如提取账单详情、分类支出或解析文本数据。

isAvailable 变量

表示 Assistant API是否可用

  • 这个状态根据您当前选择的AI提供商以及是否配置了一个可用的API Key判断。
  • 如何没有提供API Key,Assistant API将不可用,尝试调用会失败。

requestStructuredData 方法

方法描述

requestStructuredData 允许用户向助手发送文本提示,并根据定义的 JSON 结构模式获取结构化数据。

语法

1function requestStructuredData<R>(
2  prompt: string,
3  schema: JSONSchemaArray | JSONSchemaObject
4): Promise<R>

参数

  • prompt (string):提供给助手的输入提示,描述要解析的内容。
  • schema (JSONSchemaArray | JSONSchemaObject):预期的输出 JSON 结构模式,定义返回数据的格式。

返回值

返回解析为符合 schema 定义的结构化 JSON 数据的 Promise,数据类型为 R


JSON 结构模式定义

requestStructuredData 方法中,schema 参数用于定义返回数据的 JSON 结构,其数据类型如下:

JSONSchemaType

1type JSONSchemaType = JSONSchemaPrimitive | JSONSchemaArray | JSONSchemaObject

基础数据类型定义:

1type JSONSchemaPrimitive = {
2    type: "string" | "number" | "boolean"
3    required?: boolean
4    description: string
5}

数组类型定义:

1type JSONSchemaArray = {
2    type: "array"
3    items: JSONSchemaType
4    required?: boolean
5    description: string
6}

对象类型定义:

1type JSONSchemaObject = {
2    type: "object"
3    properties: Record<string, JSONSchemaType>
4    required?: boolean
5    description: string
6}

示例

1const schema: JSONSchemaObject = {
2  type: "object",
3  properties: {
4    totalAmount: {
5      type: "number",
6      required: true,
7      description: "账单总金额"
8    },
9    category: {
10      type: "string",
11      required: true,
12      description: "账单分类"
13    },
14    date: {
15      type: "string",
16      required: false,
17      description: "账单日期"
18    },
19    location: {
20      type: "string",
21      required: false,
22      description: "账单发生地点"
23    }
24  }
25}

示例用法

解析账单信息

假设我们有一张账单,需要提取其中的金额、日期、分类和地点信息。

1const someBillDetails = `
2- 金额: $15.00
3- 日期: 2024-03-11 14:30
4- 位置: 市中心停车场
5- 分类: 停车费
6`
7
8const prompt = `请解析以下账单并输出结构化数据: ${someBillDetails}`
9
10const data = await Assistant.requestStructuredData(
11  prompt,
12  schema
13)
14console.log(data)

可能的返回结果

1{
2  "totalAmount": 15.00,
3  "category": "停车费",
4  "date": "2024-03-11 14:30",
5  "location": "市中心停车场"
6}

使用注意事项

  1. 确保 schema 定义准确:JSON 结构模式应与实际需要的数据格式一致。
  2. required 属性的使用:如果某字段必须返回,请将 required 设为 true
  3. 尽可能提供清晰的 prompt:更详细的 prompt 可提高助手返回数据的准确性。
  4. 错误处理requestStructuredData 返回 Promise,应使用 try-catch 处理可能的错误。

示例错误处理:

1try {
2  const data = await Assistant.requestStructuredData(
3    prompt,
4    schema
5  )
6  console.log("解析结果:", data)
7} catch (error) {
8  console.error("解析失败:", error)
9}