From e7c856c2980ad9ff9aeeb1185f4e6073ef7bb934 Mon Sep 17 00:00:00 2001 From: Michael Paciullo <68456343+map9959@users.noreply.github.com> Date: Thu, 29 Aug 2024 18:27:07 -0400 Subject: [PATCH] langchain_openai: Add "strict" parameter to OpenAIFunctionsAgent (#25862) - **Description:** OpenAI recently introduced a "strict" parameter for [structured outputs in their API](https://openai.com/index/introducing-structured-outputs-in-the-api/). An optional `strict` parameter has been added to `create_openai_functions_agent()` and `create_openai_tools_agent()` so developers can use this feature in those agents. --------- Co-authored-by: Chester Curme --- libs/langchain/langchain/agents/openai_tools/base.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libs/langchain/langchain/agents/openai_tools/base.py b/libs/langchain/langchain/agents/openai_tools/base.py index 9d3ba6660a7..dd6c3246f93 100644 --- a/libs/langchain/langchain/agents/openai_tools/base.py +++ b/libs/langchain/langchain/agents/openai_tools/base.py @@ -1,4 +1,4 @@ -from typing import Sequence +from typing import Optional, Sequence from langchain_core.language_models import BaseLanguageModel from langchain_core.prompts.chat import ChatPromptTemplate @@ -13,7 +13,10 @@ from langchain.agents.output_parsers.openai_tools import OpenAIToolsAgentOutputP def create_openai_tools_agent( - llm: BaseLanguageModel, tools: Sequence[BaseTool], prompt: ChatPromptTemplate + llm: BaseLanguageModel, + tools: Sequence[BaseTool], + prompt: ChatPromptTemplate, + strict: Optional[bool] = None, ) -> Runnable: """Create an agent that uses OpenAI tools. @@ -87,7 +90,9 @@ def create_openai_tools_agent( if missing_vars: raise ValueError(f"Prompt missing required variables: {missing_vars}") - llm_with_tools = llm.bind(tools=[convert_to_openai_tool(tool) for tool in tools]) + llm_with_tools = llm.bind( + tools=[convert_to_openai_tool(tool, strict=strict) for tool in tools] + ) agent = ( RunnablePassthrough.assign(