我们在Typescript项目的各个部分使用OpenAI函数调用,这涉及到为您希望OpenAI响应的响应格式创建JSON Schema。
一旦我们得到了响应,我们就想再次在Typescript中与这个对象交互,所以目前我实际上是用相同的信息创建了两个模型。
似乎'json-schema-to-ts'就是为了解决这个问题而创建的。从他们的例子中可以看出:
const dogSchema = {
type: "object",
properties: {
name: { type: "string" },
age: { type: "integer" },
hobbies: { type: "array", items: { type: "string" } },
favoriteFood: { enum: ["pizza", "taco", "fries"] },
},
required: ["name", "age"],
} as const;
type Dog = FromSchema<typeof dogSchema>;
字符串
然而,当我在Typescript中使用这个例子时,例如:
let dog: Dog
dog. // <---- I get no auto completion at this point
型
如上所述,当我使用这个类型时,没有自动完成显示这个模式的属性。我做错了什么吗?
我理想的是能够定义一个Typescript接口或类,并在运行时将其转换为JSON Schema传递给OpenAI,然后将响应转换回该接口/类,这可能吗?
1条答案
按热度按时间zf9nrax11#
TypeBox(https://www.npmjs.com/package/@sinclair/typebox)似乎具有我需要的功能。
它不像从Typescript接口开始那么方便(我假设这是不可能的,因为它们在运行时不存在?),但是定义足够简洁,并且IDE在转换为Typescript类型时识别正确的模型(这对我来说不适用于'json-schema-to-ts')。