检查其他资源
- 我为这个问题添加了一个非常描述性的标题。
- 我在LangChain文档中使用集成搜索进行搜索。
- 我使用GitHub搜索找到了一个类似的问题,但没有找到。
- 我确信这是LangChain中的一个bug,而不是我的代码。
- 通过更新到LangChain的最新稳定版本(或特定集成包)无法解决此错误。
示例代码
from langchain_community.chat_models.azureml_endpoint import AzureMLChatOnlineEndpoint
from langchain_community.llms.azureml_endpoint import ContentFormatterBase
from langchain_community.chat_models.azureml_endpoint import (
AzureMLEndpointApiType,
CustomOpenAIChatContentFormatter,
)
from langchain_core.messages import HumanMessage
chat = AzureMLChatOnlineEndpoint(
endpoint_url="https://llm-host-westeurope-mx8x22bi.westeurope.inference.ml.azure.com/score",
endpoint_api_type=AzureMLEndpointApiType.dedicated,
endpoint_api_key="xY1BWYshxYJhQGZE6P7Uc1of34BW9b5t",
content_formatter=CustomOpenAIChatContentFormatter(),
)
response = chat.invoke(
[HumanMessage(content="Hallo")],max_tokens=512
)
response
错误消息和堆栈跟踪(如果适用)
我认为我已经设置了正确的部署类型。请查看完整的跟踪信息:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
File [~/anaconda3/lib/python3.11/site-packages/langchain_community/chat_models/azureml_endpoint.py:140](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/~/anaconda3/lib/python3.11/site-packages/langchain_community/chat_models/azureml_endpoint.py:140), in CustomOpenAIChatContentFormatter.format_response_payload(self, output, api_type)
139 try:
--> 140 choice = json.loads(output)["output"]
141 except (KeyError, IndexError, TypeError) as e:
KeyError: 'output'
The above exception was the direct cause of the following exception:
ValueError Traceback (most recent call last)
[/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/test.ipynb](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/test.ipynb) Zelle 4 line 8
[5](vscode-notebook-cell:/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/test.ipynb#Y133sZmlsZQ%3D%3D?line=4) prompt = ChatPromptTemplate.from_messages([("system", system), ("human", human)])
[7](vscode-notebook-cell:/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/test.ipynb#Y133sZmlsZQ%3D%3D?line=6) chain = prompt | chat
----> [8](vscode-notebook-cell:/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/test.ipynb#Y133sZmlsZQ%3D%3D?line=7) chain.invoke({"text": "Explain the importance of low latency for LLMs."})
File [~/anaconda3/lib/python3.11/site-packages/langchain_core/runnables/base.py:2507](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/~/anaconda3/lib/python3.11/site-packages/langchain_core/runnables/base.py:2507), in RunnableSequence.invoke(self, input, config, **kwargs)
2505 input = step.invoke(input, config, **kwargs)
2506 else:
-> 2507 input = step.invoke(input, config)
2508 # finish the root run
2509 except BaseException as e:
File [~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:248](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:248), in BaseChatModel.invoke(self, input, config, stop, **kwargs)
237 def invoke(
238 self,
239 input: LanguageModelInput,
(...)
243 **kwargs: Any,
244 ) -> BaseMessage:
245 config = ensure_config(config)
246 return cast(
247 ChatGeneration,
--> 248 self.generate_prompt(
249 [self._convert_input(input)],
250 stop=stop,
251 callbacks=config.get("callbacks"),
252 tags=config.get("tags"),
253 metadata=config.get("metadata"),
254 run_name=config.get("run_name"),
255 run_id=config.pop("run_id", None),
256 **kwargs,
257 ).generations[0][0],
258 ).message
File [~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:677](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:677), in BaseChatModel.generate_prompt(self, prompts, stop, callbacks, **kwargs)
669 def generate_prompt(
670 self,
671 prompts: List[PromptValue],
(...)
674 **kwargs: Any,
675 ) -> LLMResult:
676 prompt_messages = [p.to_messages() for p in prompts]
--> 677 return self.generate(prompt_messages, stop=stop, callbacks=callbacks, **kwargs)
File [~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:534](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:534), in BaseChatModel.generate(self, messages, stop, callbacks, tags, metadata, run_name, run_id, **kwargs)
532 if run_managers:
533 run_managers[i].on_llm_error(e, response=LLMResult(generations=[]))
--> 534 raise e
535 flattened_outputs = [
536 LLMResult(generations=[res.generations], llm_output=res.llm_output) # type: ignore[list-item]
537 for res in results
538 ]
539 llm_output = self._combine_llm_outputs([res.llm_output for res in results])
File [~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:524](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:524), in BaseChatModel.generate(self, messages, stop, callbacks, tags, metadata, run_name, run_id, **kwargs)
521 for i, m in enumerate(messages):
522 try:
523 results.append(
--> 524 self._generate_with_cache(
525 m,
526 stop=stop,
527 run_manager=run_managers[i] if run_managers else None,
528 **kwargs,
529 )
530 )
531 except BaseException as e:
532 if run_managers:
File [~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:749](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/~/anaconda3/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py:749), in BaseChatModel._generate_with_cache(self, messages, stop, run_manager, **kwargs)
747 else:
748 if inspect.signature(self._generate).parameters.get("run_manager"):
--> 749 result = self._generate(
750 messages, stop=stop, run_manager=run_manager, **kwargs
751 )
752 else:
753 result = self._generate(messages, stop=stop, **kwargs)
File [~/anaconda3/lib/python3.11/site-packages/langchain_community/chat_models/azureml_endpoint.py:279](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/~/anaconda3/lib/python3.11/site-packages/langchain_community/chat_models/azureml_endpoint.py:279), in AzureMLChatOnlineEndpoint._generate(self, messages, stop, run_manager, **kwargs)
273 request_payload = self.content_formatter.format_messages_request_payload(
274 messages, _model_kwargs, self.endpoint_api_type
275 )
276 response_payload = self.http_client.call(
277 body=request_payload, run_manager=run_manager
278 )
--> 279 generations = self.content_formatter.format_response_payload(
280 response_payload, self.endpoint_api_type
281 )
282 return ChatResult(generations=[generations])
File [~/anaconda3/lib/python3.11/site-packages/langchain_community/chat_models/azureml_endpoint.py:142](https://file+.vscode-resource.vscode-cdn.net/Users/mweissenba001/Documents/GitHub/fastapi_rag_demo/~/anaconda3/lib/python3.11/site-packages/langchain_community/chat_models/azureml_endpoint.py:142), in CustomOpenAIChatContentFormatter.format_response_payload(self, output, api_type)
140 choice = json.loads(output)["output"]
141 except (KeyError, IndexError, TypeError) as e:
--> 142 raise ValueError(self.format_error_msg.format(api_type=api_type)) from e
143 return ChatGeneration(
144 message=BaseMessage(
145 content=choice.strip(),
(...)
148 generation_info=None,
149 )
150 if api_type == AzureMLEndpointApiType.serverless:
ValueError: Error while formatting response payload for chat model of type `AzureMLEndpointApiType.dedicated`. Are you using the right formatter for the deployed model and endpoint type?
描述
你好,
我在Azure AI/机器学习上设置了Mixtral 8x22B,现在想将其与Langchain一起使用。我遇到了格式方面的问题,例如ChatOpenAI的响应如下所示:
from langchain_openai import ChatOpenAI
llmm = ChatOpenAI()
llmm.invoke("Hallo")
AIMessage(content='Hallo! Wie kann ich Ihnen helfen?', response_metadata={'token_usage': {'completion_tokens': 8, 'prompt_tokens': 8, 'total_tokens': 16}, 'model_name': 'gpt-3.5-turbo', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='r')
当我使用AzureMLChatOnlineEndpoint加载Mixtral 8x22B时,它看起来是这样的:
from langchain_community.chat_models.azureml_endpoint import AzureMLChatOnlineEndpoint
from langchain_community.chat_models.azureml_endpoint import (
AzureMLEndpointApiType,
CustomOpenAIChatContentFormatter,
)
from langchain_core.messages import HumanMessage
chat = AzureMLChatOnlineEndpoint(
endpoint_url="...",
endpoint_api_type=AzureMLEndpointApiType.dedicated,
endpoint_api_key="...",
content_formatter=CustomOpenAIChatContentFormatter(),
)
chat.invoke("Hallo")
BaseMessage(content='Hallo, ich bin ein deutscher Sprachassistent. Was kann ich für', type='assistant', id='run-23')
因此,在使用Mixtral模型时,输出**格式(BaseMessage vs. AIMessage)**不同。如何将其更改为像ChatOpenAI模型一样工作?
我进一步探索了在不成功的情况下是否可以在带有ChatPromptTemplate的链中工作:
from langchain_core.prompts import ChatPromptTemplate
system = "You are a helpful assistant called Bot."
human = "{text}"
prompt = ChatPromptTemplate.from_messages([("system", system), ("human", human)])
chain = prompt | chat
chain.invoke({"text": "Who are you?"})
这导致 KeyError: 'output'
和 ValueError: Error while formatting response payload for chat model of type
AzureMLEndpointApiType.dedicated . Are you using the right formatter for the deployed model and endpoint type?
。
请参阅上面的完整跟踪信息。
在我的应用程序中,我想轻松地在这两种模型之间切换。
提前感谢!
系统信息
langchain 0.2.6 pypi_0 pypi
langchain-chroma 0.1.0 pypi_0 pypi
langchain-community 0.2.6 pypi_0 pypi
langchain-core 0.2.10 pypi_0 pypi
langchain-experimental 0.0.49 pypi_0 pypi
langchain-groq 0.1.5 pypi_0 pypi
langchain-openai 0.1.7 pypi_0 pypi
langchain-postgres 0.0.3 pypi_0 pypi
langchain-text-splitters 0.2.1
6条答案
按热度按时间iq3niunx1#
嘿,@weissenbacherpwc,我打开了一个PR。
你能尝试我的分支并告诉我是否解决了问题吗?
pip install "git+https://github.com/langchain-ai/langchain.git@jacob/azure#subdirectory=libs/community"
ikfrs5lh2#
你好,@jacoblee93。我尝试安装了你的分支。现在响应被返回为AIMessage而不是BaseMessage,但是在使用它在LCEL或LLMChain中时,出现了描述中的相同错误。
我尝试使用
AzureMLOnlineEndpoint
和AzureMLChatOnlineEndpoint
进行测试,但没有成功。uurv41yg3#
看起来有一个导出的
MistralChatContentFormatter
- 你能尝试示例化并传入那个吗?https://api.python.langchain.com/en/latest/chat_models/langchain_community.chat_models.azureml_endpoint.MistralChatContentFormatter.html#
https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/chat_models/azureml_endpoint.py#L187
0s0u357o4#
尝试了一下,谢谢!
然而它仍然无法正常工作,以下是代码:
在这里调用LLM时已经失败了,之前使用CustomOpenAIChatFormatter时是可以正常工作的:
ValueError:
api_typeAzureMLEndpointApiType.dedicated is not supported by this formatter
kt06eoxx5#
@jacoblee93 我可能找到了解决这个问题的方法。我在类 MistralChatContentFormatter(LlamaChatContentFormatter) (来自第187行) azureml_endpoint.py 中添加了这段代码:
请查看完整的类:
有了这个,我可以在链中使用LLM并给LLM一个系统提示。
mutmk8jj6#
@jacoblee93 我可能找到了解决这个问题的方法。我在类 MistralChatContentFormatter(LlamaChatContentFormatter) (来自第187行) azureml_endpoint.py 中添加了这段代码:
请查看完整的类:
有了这个,我可以在链中使用LLM并给LLM一个系统提示。
编辑:但是有了这个,Langchain中流式传输LLM输出不起作用:
结果如下: