检查其他资源
- 我为这个问题添加了一个非常描述性的标题。
- 我使用集成搜索在LangChain文档中进行了搜索。
- 我使用GitHub搜索查找了一个类似的问题,但没有找到。
- 我确信这是LangChain中的一个bug,而不是我的代码。
- 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决此bug。
示例代码
我按照以下步骤操作:https://python.langchain.com/v0.2/docs/integrations/chat/huggingface/
然而,它不起作用。当我尝试将bind_tools与我的模型绑定时,代码会抛出错误。
from langchain_core.output_parsers.openai_tools import PydanticToolsParser
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_huggingface import HuggingFaceEndpoint, ChatHuggingFace
class Calculator(BaseModel):
"""Multiply two integers together."""
a: int = Field(..., description="First integer")
b: int = Field(..., description="Second integer")
llm = HuggingFaceEndpoint(
repo_id="HuggingFaceH4/zephyr-7b-beta",
task="text-generation",
max_new_tokens=100,
do_sample=False,
seed=42
)
chat_model = ChatHuggingFace(llm=llm)
llm_with_multiply = chat_model.bind_tools([Calculator], tool_choice="auto")
parser = PydanticToolsParser(tools=[Calculator])
tool_chain = llm_with_multiply | parser
tool_chain.invoke("How much is 3 multiplied by 12?")
错误信息和堆栈跟踪(如果适用)
warnings.warn(
Traceback (most recent call last):
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/llm_application_with_calc.py", line 69, in <module>
tool_chain.invoke("How much is 3 multiplied by 12?")
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_core/runnables/base.py", line 2399, in invoke
input = step.invoke(
^^^^^^^^^^^^
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_core/runnables/base.py", line 4433, in invoke
return self.bound.invoke(
^^^^^^^^^^^^^^^^^^
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_core/language_models/chat_models.py", line 170, in invoke
self.generate_prompt(
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_core/language_models/chat_models.py", line 599, in generate_prompt
return self.generate(prompt_messages, stop=stop, callbacks=callbacks, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_core/language_models/chat_models.py", line 456, in generate
raise e
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_core/language_models/chat_models.py", line 446, in generate
self._generate_with_cache(
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_core/language_models/chat_models.py", line 671, in _generate_with_cache
result = self._generate(
^^^^^^^^^^^^^^^
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_huggingface/chat_models/huggingface.py", line 212, in _generate
return self._create_chat_result(answer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_huggingface/chat_models/huggingface.py", line 189, in _create_chat_result
message=_convert_TGI_message_to_LC_message(response.choices[0].message),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/langchain_huggingface/chat_models/huggingface.py", line 102, in _convert_TGI_message_to_LC_message
if "arguments" in tool_calls[0]["function"]:
~~~~~~~~~~^^^
File "/Users/ssengupta/Desktop/LangchainTests/Langchain_Trials/.venv/lib/python3.12/site-packages/huggingface_hub/inference/_generated/types/base.py", line 144, in __getitem__
return super().__getitem__(__key)
^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 0
描述
我正在按照教程进行操作。然而,我仍然遇到上述问题。我甚至降级到了0.2.2,但它仍然无法正常工作。
系统信息
System Information
------------------
> OS: Darwin
> OS Version: Darwin Kernel Version 23.5.0: Wed May 1 20:09:52 PDT 2024; root:xnu-10063.121.3~5/RELEASE_X86_64
> Python Version: 3.12.3 (v3.12.3:f6650f9ad7, Apr 9 2024, 08:18:48) [Clang 13.0.0 (clang-1300.0.29.30)]
Package Information
-------------------
> langchain_core: 0.2.3
> langchain: 0.2.1
> langchain_community: 0.2.1
> langsmith: 0.1.67
> langchain_huggingface: 0.0.1
> langchain_text_splitters: 0.2.0
> langchainhub: 0.1.17
> langgraph: 0.0.60
Packages not installed (Not Necessarily a Problem)
--------------------------------------------------
The following packages were not found:
> langserve
9条答案
按热度按时间bbuxkriu1#
这段代码没有报错,但是没有输出。
aelbi1ox2#
我遇到了相同的问题,有人找到解决方案了吗?
abithluo3#
从您提供的代码和描述来看,您在使用HuggingFace的ChatHuggingFace模型时遇到了一些问题。根据您的描述,当您尝试使用自定义函数时,模型返回了一个空字符串。同时,当您尝试使用内置工具(如Tavily)时,模型似乎无法识别这些工具。
首先,确保您已经正确安装了所有必要的库和依赖项。对于这个问题,您需要确保已经安装了
tavily
库。您可以使用以下命令安装:接下来,您需要检查您的代码以确保您正确地使用了
TavilySearchResults
类。在您的示例中,您已经正确地设置了环境变量TAVILY_API_KEY
,但是在创建TavilySearchResults
示例时,您需要传递一个包含API密钥的字典,而不是直接将其设置为环境变量。请尝试将以下代码:替换为:
请注意,您需要将
your_tavily_api_key
替换为您的实际Tavily API密钥。如果问题仍然存在,请检查您的模型是否支持使用自定义函数。您可以通过查看模型的文档或与模型提供者联系来获取更多信息。
4ktjp1zp4#
我在一个colab笔记本中复制了这个错误(不得不使用gemma 2B,因为其他所有的东西在colab中都崩溃了):'(
https://colab.research.google.com/drive/1rYF_f4Tx6Dx2zRrEWWvWkRqXgW_LSnsM?usp=sharing
vulvrdjw5#
我也无法复制教程。
根据史密斯上的执行跟踪,工具被调用,聊天模型接收到一个ToolMessage。然而,聊天模型忽略了ToolMessage并生成另一个工具调用。
uelo1irk6#
大家好,我确认目前还不支持工具——只有聊天功能起作用。在我们实现它的过程中,应该添加一个警告/错误提示。
vyswwuz27#
你的意思是,工具目前还不支持开源模型或像GPT-4这样的闭源模型吗?
v1l68za48#
就我所见,在这个背景下,闭源模型根本不相关,因为我们正在谈论HuggingFace包,对吗?
HuggingFace的问题在于它们并不真正支持transformers库中的工具(某些特定模型和分词器的支持逐渐开始出现)。据我所知,它之所以通过API端点得到支持,是因为在text-generation-inference包中以更通用的方式处理工具(或者实际上是HuggingFace内部使用的其他方式提供API)。
我认为我们应该做的是确定text-generation-inference如何处理这个问题(代码不是超级容易阅读,所以除非我们能从作者那里得到信息,最直接的方法可能是编译一个版本,将生成的输入输出到LLM的标准输出或文件中,以便我们可以检查它们),并复制它。当然,问题在于每个模型的结构化输入提示都不同(例如,有些有特殊的系统提示标记、消息标记,有些甚至有明确的支持函数调用等)。我可以想到将可用工具等描述插入提示的不同方法,但最好遵循HuggingFace已经为他们的API所做的任何事情。
或者,我们可以等待HuggingFace改进其对工具的支持,然后尝试在其上构建接口——但在我看来,这似乎是一个不太理想的选择。
5sxhfpxr9#
啊,是的,我的错误,闭源模型与此上下文无关,因为我们正在处理HF开源模型。
但是,我明白你的意思。我想前进的方式类似于你所指示的,即查看开源LLM是否理解我们提供的工具的作用,然后它们是否能够为我们提供正确的工具参数来调用它。
但是,与此同时,在教程中添加警告或建议会让人们知道它可能或可能不起作用。