From 5a2a36114a48d856308be68f8a92c8e18f3b1e2d Mon Sep 17 00:00:00 2001 From: Jacob Lee Date: Sat, 8 Jul 2023 17:42:26 -0700 Subject: [PATCH] Make OpenAI function chain docs more readable (#1902) * Fix docs and Google Vertex integration test * Update functions docs style * Make OpenAI function chain docs more readable --- .../src/chains/openai_functions_extraction.ts | 22 +++++++++-------- .../openai_functions_openapi_customization.ts | 4 +++- .../src/chains/openai_functions_tagging.ts | 24 ++++++++++--------- langchain/src/output_parsers/index.ts | 1 + 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/examples/src/chains/openai_functions_extraction.ts b/examples/src/chains/openai_functions_extraction.ts index 82cb611016b7..5ea0b0e9d17a 100644 --- a/examples/src/chains/openai_functions_extraction.ts +++ b/examples/src/chains/openai_functions_extraction.ts @@ -2,16 +2,18 @@ import { z } from "zod"; import { ChatOpenAI } from "langchain/chat_models/openai"; import { createExtractionChainFromZod } from "langchain/chains"; -const chain = createExtractionChainFromZod( - z.object({ - "person-name": z.string().optional(), - "person-age": z.number().optional(), - "person-hair_color": z.string().optional(), - "dog-name": z.string().optional(), - "dog-breed": z.string().optional(), - }), - new ChatOpenAI({ modelName: "gpt-3.5-turbo-0613", temperature: 0 }) -); +const zodSchema = z.object({ + "person-name": z.string().optional(), + "person-age": z.number().optional(), + "person-hair_color": z.string().optional(), + "dog-name": z.string().optional(), + "dog-breed": z.string().optional(), +}); +const chatModel = new ChatOpenAI({ + modelName: "gpt-3.5-turbo-0613", + temperature: 0, +}); +const chain = createExtractionChainFromZod(zodSchema, chatModel); console.log( await chain.run(`Alex is 5 feet tall. Claudia is 4 feet taller Alex and jumps higher than him. Claudia is a brunette and Alex is blonde. diff --git a/examples/src/chains/openai_functions_openapi_customization.ts b/examples/src/chains/openai_functions_openapi_customization.ts index a0be66e0a23a..9559f037b8eb 100644 --- a/examples/src/chains/openai_functions_openapi_customization.ts +++ b/examples/src/chains/openai_functions_openapi_customization.ts @@ -1,8 +1,10 @@ import { createOpenAPIChain } from "langchain/chains"; import { ChatOpenAI } from "langchain/chat_models/openai"; +const chatModel = new ChatOpenAI({ modelName: "gpt-4-0613", temperature: 0 }); + const chain = await createOpenAPIChain("https://api.speak.com/openapi.yaml", { - llm: new ChatOpenAI({ modelName: "gpt-4-0613", temperature: 0 }), + llm: chatModel, headers: { authorization: "Bearer SOME_TOKEN", }, diff --git a/examples/src/chains/openai_functions_tagging.ts b/examples/src/chains/openai_functions_tagging.ts index b0eb0f6c6591..c52b7edf1aad 100644 --- a/examples/src/chains/openai_functions_tagging.ts +++ b/examples/src/chains/openai_functions_tagging.ts @@ -1,18 +1,20 @@ import { createTaggingChain } from "langchain/chains"; import { ChatOpenAI } from "langchain/chat_models/openai"; +import type { FunctionParameters } from "langchain/output_parsers"; -const chain = createTaggingChain( - { - type: "object", - properties: { - sentiment: { type: "string" }, - tone: { type: "string" }, - language: { type: "string" }, - }, - required: ["tone"], +const schema: FunctionParameters = { + type: "object", + properties: { + sentiment: { type: "string" }, + tone: { type: "string" }, + language: { type: "string" }, }, - new ChatOpenAI({ modelName: "gpt-4-0613", temperature: 0 }) -); + required: ["tone"], +}; + +const chatModel = new ChatOpenAI({ modelName: "gpt-4-0613", temperature: 0 }); + +const chain = createTaggingChain(schema, chatModel); console.log( await chain.run( diff --git a/langchain/src/output_parsers/index.ts b/langchain/src/output_parsers/index.ts index 286b10800896..ec03ad1f2873 100644 --- a/langchain/src/output_parsers/index.ts +++ b/langchain/src/output_parsers/index.ts @@ -12,6 +12,7 @@ export { CombiningOutputParser } from "./combining.js"; export { RouterOutputParser, RouterOutputParserInput } from "./router.js"; export { CustomListOutputParser } from "./list.js"; export { + FunctionParameters, OutputFunctionsParser, JsonOutputFunctionsParser, JsonKeyOutputFunctionsParser,