主要用到的依赖为:

langchain  zod 

1.在多个接口中匹配到一个接口:

需要通过z.descrimination 定义联合接口的schema

这里apiKey字段当作每个接口定义的唯一标识 ,langchain识别也是通过,自然语言关键字对应到apiKey进行匹配

const apiSchema = [
    z.object({
        apiKey:z.literal('name1',{description:}),
        methods:
        url:
        params:
        data:
    }),
    {},
    {}
]
const targetApiSchema = z.discriminatedUnion('apiKey',apiSchema,{description:})

解析器:

const parser = StructedOutputParser.fromZodSchema(targetApiSchema) 

const formatInps = parser.getFormatInsturction() 解析器 对接口类型进行强校验

下面是接口字典 ,会放在prompt里面 就是这边的name1 与 上面schema里的apiKey对应 

const apiDict = `
接口列表及功能:
1.name1(接口中文名称):接口功能描述;(比如:name1(新增任务):功能是新增任务,需传任务名,倒计时,优先级,方法POST)
2....
3....
`
const prompt = `
${apiDict}
自然语言需求:${n1} 
${formatInps}`
这边的n1为用户输入的内容

prompt里需要包含接口字典,用户输入内容和格式化的解析器

const aiRes = aiModel.invoke(prompt)

const apiParams = parser.parse(aiRes.content)

返回的对应schema格式的匹配结果 可以根据返回对象里的url 进行接口请求

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐