You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Langchain触发apply_and_parse方法弃用警告,求解决方案

解决Langchain中apply_and_parse方法弃用警告

问题原因

使用ConversationalRetrievalChain且指定chain_type="map_rerank"时,Langchain旧版本的内部实现依赖已弃用的apply_and_parse方法,新版本要求直接将输出解析器传递给LLMChain,因此触发该警告。

解决方案

手动构建MapRerankDocumentsChain并显式传入输出解析器,替代from_llm的快捷创建方式。

修改后的完整代码

from langchain.chains import ConversationalRetrievalChain, MapRerankDocumentsChain
from langchain.chains.llm import LLMChain
from langchain.prompts import PromptTemplate
from langchain.output_parsers import MapRerankOutputParser
from langchain.memory import ConversationBufferMemory
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.llms import OpenAI

Vector_Path = "你的向量库路径"
embeddings = OpenAIEmbeddings()

def LoadVector():
    global VectorStore   
    VectorStore = FAISS.load_local(Vector_Path, embeddings)

LoadVector()

memory = ConversationBufferMemory(
    memory_key="chat_history", return_messages=True
)  

retriever = VectorStore.as_retriever(search_type="mmr")

# 定义map_rerank所需的Prompt模板(必须包含评分指令)
prompt_template = """使用以下上下文片段回答最后的问题。
你必须根据回答贴合问题的程度从1到10评分,10为最佳。

上下文:
{context}

问题: {question}

先输出答案,然后换行并写"Rank: [数字]"。
"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["context", "question"]
)

# 初始化输出解析器
output_parser = MapRerankOutputParser()

# 创建带输出解析器的LLMChain
llm_chain = LLMChain(
    llm=OpenAI(temperature=0),
    prompt=PROMPT,
    output_parser=output_parser
)

# 创建MapRerankDocumentsChain
rerank_chain = MapRerankDocumentsChain(
    llm_chain=llm_chain,
    document_variable_name="context",
    rank_key="Rank",
    answer_key="answer"
)

# 构建最终的对话检索链
qa = ConversationalRetrievalChain(
    retriever=retriever,
    combine_docs_chain=rerank_chain,
    memory=memory
)

query="what is power app give response in detail"
result = qa({"question": query})
print(result)

关键修改点

  • 新增导入MapRerankOutputParser、MapRerankDocumentsChain和LLMChain模块
  • 定义符合map_rerank逻辑的Prompt模板,明确要求输出答案和评分
  • 创建LLMChain时直接传入output_parser参数
  • 用手动构建的rerank_chain替代原from_llm方法中的chain_type="map_rerank"参数

内容的提问来源于stack exchange,提问作者Amardeep raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:25:29