mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-15 00:54:06 -08:00
f05d96cea0
Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
import type { OpenAIClient } from '@langchain/openai';
|
|
import type { StructuredTool } from '@langchain/core/tools';
|
|
|
|
// Copied from langchain(`langchain/src/tools/convert_to_openai.ts`)
|
|
// since these functions are not exported
|
|
|
|
/**
|
|
* Formats a `StructuredTool` instance into a format that is compatible
|
|
* with OpenAI's ChatCompletionFunctions. It uses the `zodToJsonSchema`
|
|
* function to convert the schema of the `StructuredTool` into a JSON
|
|
* schema, which is then used as the parameters for the OpenAI function.
|
|
*/
|
|
export function formatToOpenAIFunction(
|
|
tool: StructuredTool,
|
|
): OpenAIClient.Chat.ChatCompletionCreateParams.Function {
|
|
return {
|
|
name: tool.name,
|
|
description: tool.description,
|
|
parameters: zodToJsonSchema(tool.schema),
|
|
};
|
|
}
|
|
|
|
export function formatToOpenAITool(tool: StructuredTool): OpenAIClient.Chat.ChatCompletionTool {
|
|
const schema = zodToJsonSchema(tool.schema);
|
|
return {
|
|
type: 'function',
|
|
function: {
|
|
name: tool.name,
|
|
description: tool.description,
|
|
parameters: schema,
|
|
},
|
|
};
|
|
}
|
|
|
|
export function formatToOpenAIAssistantTool(tool: StructuredTool): OpenAIClient.Beta.AssistantTool {
|
|
return {
|
|
type: 'function',
|
|
function: {
|
|
name: tool.name,
|
|
description: tool.description,
|
|
parameters: zodToJsonSchema(tool.schema),
|
|
},
|
|
};
|
|
}
|