llama_index [Bug]: 当与LangChainLLM一起使用时,PydanticSelector失败,

svdrlsy4  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(57)

Bug描述

PydanticSelector验证失败,因为它期望一个LlamaIndex OpenAI llm。作为一个LangChainLLM,OpenAILike llm也可以被提供,所以这个验证不应该限制这些llms在选择器中的使用。

版本

^0.10.55

重现步骤

LangChainLLM(
    ChatOpenAI(
         model=DEFAULT_FAST_MODEL,
         max_tokens=512,
         api_key=config.openai.api_key,
         base_url=config.openai.api_base,
         model_kwargs={
              "extra_body": {
              "customer_identifier": auth.user_id,
               "metadata": {"service": "retrieval"},
               }
           },
        )
    )
}
LLMSingleSelector.from_defaults(llm=llm)

相关日志/回溯

  • 无响应*
py49o6xq

py49o6xq1#

要解决PydanticSelectorLangChainLLM一起使用时失败的问题,您需要修改验证逻辑以接受LangChainLLM示例。以下是如何更新PydanticSelector类以支持LangChainLLM的方法:

  1. 导入必要的类。
  2. 更新验证逻辑以包括LangChainLLM
    以下是修改验证逻辑的示例:
from pydantic import BaseModel, validator
from typing import Union
from llama_index.legacy.llms.openai import OpenAI
from llama_index.llms.langchain import LangChainLLM
from langchain.base_language import BaseLanguageModel

class PydanticSelector(BaseModel):
    llm: Union[OpenAI, LangChainLLM, BaseLanguageModel]

    @validator('llm')
    def validate_llm(cls, v):
        if not isinstance(v, (OpenAI, LangChainLLM, BaseLanguageModel)):
            raise ValueError('llm must be an instance of OpenAI, LangChainLLM, or BaseLanguageModel')
        return v

此修改确保PydanticSelector类可以识别和验证LangChainLLM示例以及OpenAI和其他兼容LLMs 1(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/llms/llama-index-llms-langchain/llama_index/llms/langchain/base.py)2(https://github.com/run-llama/llama_index/blob/main/llama-index-legacy/llama_index/legacy/llms/utils.py)3(https://github.com/run-llama/llama_index/blob/main/llama-index-integrations/llms/llama-index-llms-langchain/llama_index/llms/langchain/init.py)。

  • 要继续与Dosu进行对话,请提及@dosu。*
l0oc07j2

l0oc07j22#

Langchain llm是一个通用的 Package 器,它不知道底层的llm是什么。由于langchain llm类没有实现函数调用,因此不能将其用作pydantic选择器。您需要使用常规的llm选择器,或者从llamaindex使用openai llm。

相关问题