检查其他资源
- 为这个问题添加了一个非常描述性的标题。
- 使用集成搜索在LangChain文档中进行了搜索。
- 使用GitHub搜索找到了一个类似的问题,但没有找到。
- 我确信这是LangChain中的一个bug,而不是我的代码。
- 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决此bug。
示例代码
import os
from langchain_anthropic import ChatAnthropic
from langchain_core.runnables import ConfigurableField, RunnableConfig
from pydantic.v1 import SecretStr
client = ChatAnthropic(
base_url=os.environ['CHAT_ANTHROPIC_BASE_URL'],
api_key=SecretStr(os.environ['CHAT_ANTHROPIC_API_KEY']),
model_name='claude-3-opus-20240229',
).configurable_fields(
model_kwargs=ConfigurableField(
id="model_kwargs",
name="Model Kwargs",
description="Keyword arguments to pass through to the chat client (e.g. user)",
),
)
configurable = {
"model_kwargs": {"metadata": {"user_id": "testuserid"}}
}
response = client.invoke("Write me a short story", config=RunnableConfig(configurable=configurable))
print(response)
错误信息和堆栈跟踪(如果适用)
异常:ValidatorError
Traceback (most recent call last):
File "main.py", line 32, in <module>
response = client.invoke("Write me a short story", config=RunnableConfig(configurable=configurable))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/.venv/lib/python3.12/site-packages/langchain_core/runnables/configurable.py", line 115, in invoke
runnable, config = self.prepare(config)
^^^^^^^^^^^^^^^^^^^^
File "/.venv/lib/python3.12/site-packages/langchain_core/runnables/configurable.py", line 104, in prepare
runnable, config = runnable._prepare(merge_configs(runnable.config, config))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/.venv/lib/python3.12/site-packages/langchain_core/runnables/configurable.py", line 415, in _prepare
self.default.__class__(**{**init_params, **configurable}),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/.venv/lib/python3.12/site-packages/pydantic/v1/main.py", line 341, in __init__
raise validation_error
pydantic.v1.error_wrappers.ValidationError: 1 validation error for ChatAnthropic
__root__
Found metadata supplied twice. (type=value_error)
描述
- 我正在尝试设置一个可重用的聊天模型,在其中每次调用时都可以传入一个用户
- Anthropic通过在
messages.create(...)
调用上的metadata
对象来实现这一点,如此处所述 - 由于它是
create()
调用的额外参数,我认为我应该能够通过model_kwargs
传递它 - 但似乎与某物冲突(我猜是
BaseLanguageModel
的metadata
字段)
有没有办法绕过这个问题,以便可以将metadata
关键字参数传递给create()
调用,就像预期的那样?从表面上看,由于它位于model_kwargs
下面,它不应该与其他参数冲突。它们是否被展平了,如果是的话,为什么?
系统信息
系统信息
操作系统:Darwin
OS版本:Darwin Kernel Version 23.5.0: Wed May 1 20:14:38 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6020
Python版本:3.12.3 (main, Jul 2 2024, 11:16:56) [Clang 15.0.0 (clang-1500.3.9.4)]
软件包信息
langchain_core: 0.2.13
langchain: 0.2.7
langchain_community: 0.2.7
langsmith: 0.1.85
langchain_anthropic: 0.1.19
langchain_openai: 0.1.15
langchain_text_splitters: 0.2.2
没有安装的软件包(不一定是一个问题)
以下软件包未找到:
langgraph
langserve
2条答案
按热度按时间ttp71kqs1#
元数据应该直接传递,而不是通过model_kwargs。
628mspwn2#
我尝试了你的建议@baskaryan,现在不再报错,但遗憾的是它也无法发送用户ID。以下是在请求中发送的参数: