1) Для такого вида запросов верни agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION. в initialize_agent
2) Я так и не смог найти код CryptocurrencySearchAPIWrapper чтобы проверить работу и как там написан tool. Напиши где его взять - я может и помогу.
3) Обновись до последней версии Langhain - была там беда с интерпритацией (запуском задачи) из промпта.
Вот тебе рабочий пример, что тул заходит в функцию
from langchain.agents import Tool, load_tools, initialize_agent, AgentType
from langchain.memory import ConversationBufferMemory
from langchain.chat_models import ChatOpenAI
# from coinmarketcap_search import CryptocurrencySearchAPIWrapper
llm = ChatOpenAI(
temperature=1,
streaming=False,
max_tokens=900,
)
tools = load_tools(["llm-math"], llm=llm)
def crypto_search(query):
print('in tool')
return 42
tools.append(Tool.from_function(
name="Crypto Currency Search",
func=crypto_search,
description="Use this tool when you need to answer questions about Cryptocurrency prices or altcoins prices "
"Input should be the Cryptocurrency coin name only or the ticker symbol"
))
memory = ConversationBufferMemory(memory_key="chat_history")
chain = initialize_agent(
tools, llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
#agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
verbose=True,
memory=memory
)
def search_by_prompt(prompt: str) -> str:
try:
response = chain.run(prompt)
except Exception as e:
response = str(e)
suffix = "Could not parse LLM output: `"
if response.startswith(suffix):
response = response.removeprefix(suffix).removesuffix("`")
return response
print(search_by_prompt('what is price of btc'))
Вывод будет таким:
> Entering new AgentExecutor chain...
I should use the Crypto Currency Search tool to find the price of BTC.
Action: Crypto Currency Search
Action Input: BTCin tool
Observation: 42
Thought:I now know the price of BTC.
Final Answer: The price of BTC is 42.
> Finished chain.
The price of BTC is 42.
Так как на руках у меня нет кода CryptocurrencySearchAPIWrapper - не подскажу что там.
Теперь просто нужно тебе разобраться с недрами CryptocurrencySearchAPIWrapper.run. внути по идее из запроса тебе нужно понять запрашиваемую монетку и зарядить запрос в Api. Далее вернуть в результат из тула. Дальше GPT сам красоту делает.