Home / Function/ create_self_ask_with_search_agent() — langchain Function Reference

create_self_ask_with_search_agent() — langchain Function Reference

Architecture documentation for the create_self_ask_with_search_agent() function in base.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  b53efa09_8814_c578_b880_c924cff3e16c["create_self_ask_with_search_agent()"]
  1fab5269_943e_e7a5_4729_eee14e04448a["base.py"]
  b53efa09_8814_c578_b880_c924cff3e16c -->|defined in| 1fab5269_943e_e7a5_4729_eee14e04448a
  style b53efa09_8814_c578_b880_c924cff3e16c fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

libs/langchain/langchain_classic/agents/self_ask_with_search/base.py lines 97–216

def create_self_ask_with_search_agent(
    llm: BaseLanguageModel,
    tools: Sequence[BaseTool],
    prompt: BasePromptTemplate,
) -> Runnable:
    """Create an agent that uses self-ask with search prompting.

    Args:
        llm: LLM to use as the agent.
        tools: List of tools. Should just be of length 1, with that tool having
            name `Intermediate Answer`
        prompt: The prompt to use, must have input key `agent_scratchpad` which will
            contain agent actions and tool outputs.

    Returns:
        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.

    Examples:
        ```python
        from langchain_classic import hub
        from langchain_anthropic import ChatAnthropic
        from langchain_classic.agents import (
            AgentExecutor,
            create_self_ask_with_search_agent,
        )

        prompt = hub.pull("hwchase17/self-ask-with-search")
        model = ChatAnthropic(model="claude-3-haiku-20240307")
        tools = [...]  # Should just be one tool with name `Intermediate Answer`

        agent = create_self_ask_with_search_agent(model, tools, prompt)
        agent_executor = AgentExecutor(agent=agent, tools=tools)

        agent_executor.invoke({"input": "hi"})
        ```

    Prompt:

        The prompt must have input key `agent_scratchpad` which will
            contain agent actions and tool outputs as a string.

        Here's an example:

        ```python
        from langchain_core.prompts import PromptTemplate

        template = '''Question: Who lived longer, Muhammad Ali or Alan Turing?
        Are follow up questions needed here: Yes.
        Follow up: How old was Muhammad Ali when he died?
        Intermediate answer: Muhammad Ali was 74 years old when he died.
        Follow up: How old was Alan Turing when he died?
        Intermediate answer: Alan Turing was 41 years old when he died.
        So the final answer is: Muhammad Ali

        Question: When was the founder of craigslist born?
        Are follow up questions needed here: Yes.
        Follow up: Who was the founder of craigslist?
        Intermediate answer: Craigslist was founded by Craig Newmark.
        Follow up: When was Craig Newmark born?
        Intermediate answer: Craig Newmark was born on December 6, 1952.
        So the final answer is: December 6, 1952

        Question: Who was the maternal grandfather of George Washington?
        Are follow up questions needed here: Yes.
        Follow up: Who was the mother of George Washington?
        Intermediate answer: The mother of George Washington was Mary Ball Washington.
        Follow up: Who was the father of Mary Ball Washington?
        Intermediate answer: The father of Mary Ball Washington was Joseph Ball.
        So the final answer is: Joseph Ball

        Question: Are both the directors of Jaws and Casino Royale from the same country?
        Are follow up questions needed here: Yes.
        Follow up: Who is the director of Jaws?
        Intermediate answer: The director of Jaws is Steven Spielberg.
        Follow up: Where is Steven Spielberg from?
        Intermediate answer: The United States.
        Follow up: Who is the director of Casino Royale?
        Intermediate answer: The director of Casino Royale is Martin Campbell.
        Follow up: Where is Martin Campbell from?

Subdomains

Frequently Asked Questions

What does create_self_ask_with_search_agent() do?
create_self_ask_with_search_agent() is a function in the langchain codebase, defined in libs/langchain/langchain_classic/agents/self_ask_with_search/base.py.
Where is create_self_ask_with_search_agent() defined?
create_self_ask_with_search_agent() is defined in libs/langchain/langchain_classic/agents/self_ask_with_search/base.py at line 97.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free