Anonymous
Вызов инструмента Langchain не возвращает никакого контента
Сообщение
Anonymous » 12 янв 2025, 21:21
Я пытаюсь заставить Langchain работать с вызовом инструментов. Я следил за руководством на их веб-сайте и обнаружил неожиданное поведение.
Это руководство:
https://python.langchain.com/docs/how_t ... _to_model/ < /p>
Вот мой код.
Код: Выделить всё
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
from langchain_core.tools import tool
llm = ChatOpenAI(
base_url="https://api.together.xyz/v1",
api_key="",
model="mistralai/Mixtral-8x7B-Instruct-v0.1",
)
@tool
def add(a: int, b: int) -> int:
"""Add two integers.
Args:
a: First integer
b: Second integer
"""
return a + b
@tool
def multiply(a: int, b: int) -> int:
"""Multiply two integers.
Args:
a: First integer
b: Second integer
"""
return a * b
tools = [add, multiply]
llm = llm.bind_tools(tools)
messages = [HumanMessage("What's 4 times 2?")]
response = llm.invoke(messages)
print(response)
print("-----------------------------------")
if response.tool_calls:
messages.append(response)
for tool_call in response.tool_calls:
selected_tool = {"add": add, "multiply": multiply}[tool_call["name"].lower()]
tool_msg = selected_tool.invoke(tool_call)
messages.append(tool_msg)
print(messages)
print("-----------------------------------")
second_response = llm.invoke(messages)
print(second_response)
Вот результаты моих операторов печати:
Код: Выделить всё
content='' additional_kwargs={'tool_calls': [{'id': 'call_fpwz3qsn4vkt6seo6imduqex', 'function': {'arguments': '{"a":4,"b":2}', 'name': 'multiply'}, 'type': 'function'}], 'refusal': None} response_metadata={'token_usage': {'completion_tokens': 43, 'prompt_tokens': 330, 'total_tokens': 373, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'mistralai/Mixtral-8x7B-Instruct-v0.1', 'system_fingerprint': None, 'finish_reason': 'tool_calls', 'logprobs': None} id='run-b3423d84-639c-4c02-88c7-ee4b581a7998-0' tool_calls=[{'name': 'multiply', 'args': {'a': 4, 'b': 2}, 'id': 'call_fpwz3qsn4vkt6seo6imduqex', 'type': 'tool_call'}] usage_metadata={'input_tokens': 330, 'output_tokens': 43, 'total_tokens': 373, 'input_token_details': {}, 'output_token_details': {}}
-----------------------------------
[HumanMessage(content="What's 4 times 2?", additional_kwargs={}, response_metadata={}), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_fpwz3qsn4vkt6seo6imduqex', 'function': {'arguments': '{"a":4,"b":2}', 'name': 'multiply'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 43, 'prompt_tokens': 330, 'total_tokens': 373, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'mistralai/Mixtral-8x7B-Instruct-v0.1', 'system_fingerprint': None, 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-b3423d84-639c-4c02-88c7-ee4b581a7998-0', tool_calls=[{'name': 'multiply', 'args': {'a': 4, 'b': 2}, 'id': 'call_fpwz3qsn4vkt6seo6imduqex', 'type': 'tool_call'}], usage_metadata={'input_tokens': 330, 'output_tokens': 43, 'total_tokens': 373, 'input_token_details': {}, 'output_token_details': {}}), ToolMessage(content='8', name='multiply', tool_call_id='call_fpwz3qsn4vkt6seo6imduqex')]
-----------------------------------
content='' additional_kwargs={'tool_calls': [{'id': 'call_2asrsb030ix9cnx2jhhvlbps', 'function': {'arguments': '{"a":5,"b":3}', 'name': 'add'}, 'type': 'function'}], 'refusal': None} response_metadata={'token_usage': {'completion_tokens': 42, 'prompt_tokens': 395, 'total_tokens': 437, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'mistralai/Mixtral-8x7B-Instruct-v0.1', 'system_fingerprint': None, 'finish_reason': 'tool_calls', 'logprobs': None} id='run-7c3f26f1-7f59-4738-a621-6fd2e72cef75-0' tool_calls=[{'name': 'add', 'args': {'a': 5, 'b': 3}, 'id': 'call_2asrsb030ix9cnx2jhhvlbps', 'type': 'tool_call'}] usage_metadata={'input_tokens': 395, 'output_tokens': 42, 'total_tokens': 437, 'input_token_details': {}, 'output_token_details': {}}
Я ожидаю, что содержимое в Second_response должно быть заполнено ответом, сгенерированным искусственным интеллектом, на мой вопрос. Что-то вроде 4, умноженное на 2, равно 8. Если у вас возникнут еще вопросы, дайте мне знать!.
Я что-то делаю неправильно? Буду очень признателен за любую помощь в достижении ожидаемого мной поведения.
Спасибо
Подробнее здесь:
https://stackoverflow.com/questions/793 ... ny-content
1736706086
Anonymous
Я пытаюсь заставить Langchain работать с вызовом инструментов. Я следил за руководством на их веб-сайте и обнаружил неожиданное поведение. Это руководство: https://python.langchain.com/docs/how_to/tool_results_pass_to_model/< /p> Вот мой код. [code]from langchain_openai import ChatOpenAI from langchain_core.messages import HumanMessage from langchain_core.tools import tool llm = ChatOpenAI( base_url="https://api.together.xyz/v1", api_key="", model="mistralai/Mixtral-8x7B-Instruct-v0.1", ) @tool def add(a: int, b: int) -> int: """Add two integers. Args: a: First integer b: Second integer """ return a + b @tool def multiply(a: int, b: int) -> int: """Multiply two integers. Args: a: First integer b: Second integer """ return a * b tools = [add, multiply] llm = llm.bind_tools(tools) messages = [HumanMessage("What's 4 times 2?")] response = llm.invoke(messages) print(response) print("-----------------------------------") if response.tool_calls: messages.append(response) for tool_call in response.tool_calls: selected_tool = {"add": add, "multiply": multiply}[tool_call["name"].lower()] tool_msg = selected_tool.invoke(tool_call) messages.append(tool_msg) print(messages) print("-----------------------------------") second_response = llm.invoke(messages) print(second_response) [/code] Вот результаты моих операторов печати: [code]content='' additional_kwargs={'tool_calls': [{'id': 'call_fpwz3qsn4vkt6seo6imduqex', 'function': {'arguments': '{"a":4,"b":2}', 'name': 'multiply'}, 'type': 'function'}], 'refusal': None} response_metadata={'token_usage': {'completion_tokens': 43, 'prompt_tokens': 330, 'total_tokens': 373, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'mistralai/Mixtral-8x7B-Instruct-v0.1', 'system_fingerprint': None, 'finish_reason': 'tool_calls', 'logprobs': None} id='run-b3423d84-639c-4c02-88c7-ee4b581a7998-0' tool_calls=[{'name': 'multiply', 'args': {'a': 4, 'b': 2}, 'id': 'call_fpwz3qsn4vkt6seo6imduqex', 'type': 'tool_call'}] usage_metadata={'input_tokens': 330, 'output_tokens': 43, 'total_tokens': 373, 'input_token_details': {}, 'output_token_details': {}} ----------------------------------- [HumanMessage(content="What's 4 times 2?", additional_kwargs={}, response_metadata={}), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_fpwz3qsn4vkt6seo6imduqex', 'function': {'arguments': '{"a":4,"b":2}', 'name': 'multiply'}, 'type': 'function'}], 'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 43, 'prompt_tokens': 330, 'total_tokens': 373, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'mistralai/Mixtral-8x7B-Instruct-v0.1', 'system_fingerprint': None, 'finish_reason': 'tool_calls', 'logprobs': None}, id='run-b3423d84-639c-4c02-88c7-ee4b581a7998-0', tool_calls=[{'name': 'multiply', 'args': {'a': 4, 'b': 2}, 'id': 'call_fpwz3qsn4vkt6seo6imduqex', 'type': 'tool_call'}], usage_metadata={'input_tokens': 330, 'output_tokens': 43, 'total_tokens': 373, 'input_token_details': {}, 'output_token_details': {}}), ToolMessage(content='8', name='multiply', tool_call_id='call_fpwz3qsn4vkt6seo6imduqex')] ----------------------------------- content='' additional_kwargs={'tool_calls': [{'id': 'call_2asrsb030ix9cnx2jhhvlbps', 'function': {'arguments': '{"a":5,"b":3}', 'name': 'add'}, 'type': 'function'}], 'refusal': None} response_metadata={'token_usage': {'completion_tokens': 42, 'prompt_tokens': 395, 'total_tokens': 437, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'mistralai/Mixtral-8x7B-Instruct-v0.1', 'system_fingerprint': None, 'finish_reason': 'tool_calls', 'logprobs': None} id='run-7c3f26f1-7f59-4738-a621-6fd2e72cef75-0' tool_calls=[{'name': 'add', 'args': {'a': 5, 'b': 3}, 'id': 'call_2asrsb030ix9cnx2jhhvlbps', 'type': 'tool_call'}] usage_metadata={'input_tokens': 395, 'output_tokens': 42, 'total_tokens': 437, 'input_token_details': {}, 'output_token_details': {}} [/code] Я ожидаю, что содержимое в Second_response должно быть заполнено ответом, сгенерированным искусственным интеллектом, на мой вопрос. Что-то вроде 4, умноженное на 2, равно 8. Если у вас возникнут еще вопросы, дайте мне знать!. Я что-то делаю неправильно? Буду очень признателен за любую помощь в достижении ожидаемого мной поведения. Спасибо Подробнее здесь: [url]https://stackoverflow.com/questions/79350455/langchain-tool-calling-not-returning-any-content[/url]