from typing import List from langchain.agents import AgentExecutor, create_openai_tools_agent from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.tools import BaseTool from langchain_openai import ChatOpenAI def create_agent( llm: ChatOpenAI, tools: List[BaseTool], system_prompt: str ) -> AgentExecutor: """Create an agent executor with given tools and a system prompt.""" prompt = ChatPromptTemplate.from_messages( [ ("system", system_prompt), MessagesPlaceholder(variable_name="messages"), MessagesPlaceholder(variable_name="agent_scratchpad"), ] ) agent = create_openai_tools_agent(llm, tools, prompt) executor = AgentExecutor(agent=agent, tools=tools) return executor