• Create an agent that uses OpenAI-style tool calling.

    Parameters

    Returns Promise<AgentRunnableSequence<{
        steps: ToolsAgentStep[];
    }, AgentFinish | AgentAction[]>>

    A runnable sequence representing an agent. It takes as input all the same input variables as the prompt passed in does. It returns as output either an AgentAction or AgentFinish.

    import { AgentExecutor, createOpenAIToolsAgent } from "langchain/agents";
    import { pull } from "langchain/hub";
    import type { ChatPromptTemplate } from "@langchain/core/prompts";
    import { AIMessage, HumanMessage } from "@langchain/core/messages";

    import { ChatOpenAI } from "@langchain/openai";

    // Define the tools the agent will have access to.
    const tools = [...];

    // Get the prompt to use - you can modify this!
    // If you want to see the prompt in full, you can at:
    // https://smith.langchain.com/hub/hwchase17/openai-tools-agent
    const prompt = await pull<ChatPromptTemplate>(
    "hwchase17/openai-tools-agent"
    );

    const llm = new ChatOpenAI({
    temperature: 0,
    modelName: "gpt-3.5-turbo-1106",
    });

    const agent = await createOpenAIToolsAgent({
    llm,
    tools,
    prompt,
    });

    const agentExecutor = new AgentExecutor({
    agent,
    tools,
    });

    const result = await agentExecutor.invoke({
    input: "what is LangChain?",
    });

    // With chat history
    const result2 = await agentExecutor.invoke({
    input: "what's my name?",
    chat_history: [
    new HumanMessage("hi! my name is cob"),
    new AIMessage("Hello Cob! How can I assist you today?"),
    ],
    });