Self ask with search
Обновлено 24 мая 2024
Поиск ответа в интернете с промежуточными вопросами
from langchain import hub
from langchain.agents import AgentExecutor, create_self_ask_with_search_agent
from langchain_community.llms import Fireworks
from langchain_community.tools.tavily_search import TavilyAnswer
Initialize Tools
We will initialize the tools we want to use. This is a good tool because it gives us answers (not documents)
For this agent, only one tool can be used and it needs to be named "Intermediate Answer"
tools = [TavilyAnswer(max_results=1, name="Intermediate Answer")]
Create Agent
# Get the prompt to use - you can modify this!
prompt = hub.pull("hwchase17/self-ask-with-search")
# Choose the LLM that will drive the agent
llm = Fireworks()
# Construct the Self Ask With Search Agent
agent = create_self_ask_with_search_agent(llm, tools, prompt)
Run Agent
# Create an agent executor by passing in the agent and tools
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
from langchain.agents import AgentType, Tool, initialize_agent
from langchain.chat_models import ChatOpenAI, GigaChat
from langchain.llms import OpenAI
from langchain.utilities import SerpAPIWrapper
# llm = GigaChat(credentials=..., verbose=True)
llm = ChatOpenAI(model="gpt-4", openai_api_key="<sk-...>")
search = SerpAPIWrapper()
tools = [
Tool(
name="Промежуточный ответ",
func=search.run,
description="Используется, когда нужно вопспользоваться поиском",
)
]
self_ask_with_search = initialize_agent(
tools, llm, agent=AgentType.SELF_ASK_WITH_SEARCH, verbose=True
)
self_ask_with_search.run("Как звали жену человека, который придумал психотипы")
> Entering new AgentExecutor chain...
Да.
Дополнительный вопрос: Кто придумал психотипы?
Промежуточный ответ: Психотип. Психологический тип –это теория личности, созданная швейцарским психиатром Карлом Густавом Юнгом для объяснения нормальных различий здоровых людей ...
Дополнительный вопрос: Как звали жену Карла Густава Юнга?
Промежуточный ответ: Emma Jung
Итак, окончательный ответ: Emma Jung
> Finished chain.
{'input': "What is the hometown of the reigning men's U.S. Open champion?",
'output': 'Novak Djokovic.'}
Используем внутренний агент
self_ask_with_search = initialize_agent(
tools, llm, agent=AgentType.SELF_ASK_WITH_SEARCH, verbose=True
)
self_ask_with_search.run("Сколько можно купить самых дешевых автомобилей за 1 биткоин?")
> Entering new AgentExecutor chain...
Да.
Дополнительный вопрос: Какова стоимость 1 биткоина?
Промежуточный ответ: Логотип. Bitcoin. 25823.7$. Стоимость. 221 302 000$. Объем 24ч. Логотип. Ethereum. 1629.13$. Стоимость. 104 832 000$. Объем 24ч. Логотип.
Дополнительный вопрос: Сколько стоит самый дешевый автомобиль?
Промежуточный ответ: Bajaj Qute – самый дешевый автомобиль в мире. У себя на родине, в Индии, он стоит 3 400 долларов. В пересчете на рубли это 193 тысяч. Компания, ...
Итак, окончательный ответ: Примерно 7 автомобилей.
> Finished chain.
'Примерно 7 автомобилей.'