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

Google Colab中LangChain代码出现JSONDecodeError问题求助

解决LangChain中create_extraction_chain的JSONDecodeError问题

你的问题根源是GPT-3.5-turbo输出的JSON格式不规范,出现了未闭合的字符串,导致LangChain的解析器报错。以下是几个直接可用的解决办法:

  • 强制LLM输出严格JSON
    用JsonOutputParser配合PromptTemplate,让模型明确知道必须输出合法JSON。先定义你要提取的结构,再自动生成格式约束指令,示例代码:

    from langchain.output_parsers import JsonOutputParser
    from langchain.prompts import PromptTemplate
    from pydantic import BaseModel, List
    
    # 定义主题提取的结构,根据你的需求调整
    class TopicStructure(BaseModel):
        main_topics: List[str]
        sub_topics: List[str]
    
    parser = JsonOutputParser(pydantic_object=TopicStructure)
    
    # 构建带格式要求的prompt
    prompt = PromptTemplate(
        template="从以下文本提取主题,必须输出严格符合JSON格式的内容:\n{text}\n{format_instructions}",
        input_variables=["text"],
        partial_variables={"format_instructions": parser.get_format_instructions()}
    )
    
    # 重新构建链
    chain = prompt | llm | parser
    
  • 清洗map_reduce的输出文本
    map_reduce生成的topics_found可能包含换行、特殊字符,干扰后续的JSON生成。先对文本做清洗:

    import re
    
    def clean_transcript(text):
        # 合并多余换行和空格
        text = re.sub(r'\n+', ' ', text).strip()
        # 转义双引号,避免JSON解析冲突
        text = text.replace('"', '\\"')
        return text
    
    # 先清洗再传入chain
    topics_found_cleaned = clean_transcript(topics_found)
    topics_structured = chain.run(topics_found_cleaned)
    
  • 降低模型输出随机性
    调用GPT-3.5-turbo时设置temperature=0,减少模型输出的不确定性,提升JSON格式的稳定性:

    from langchain.chat_models import ChatOpenAI
    
    llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
    
  • 添加解析错误重试机制
    用RetryOutputParser捕获解析失败的情况,自动让模型重新生成符合要求的输出:

    from langchain.output_parsers import RetryOutputParser
    
    retry_parser = RetryOutputParser.from_llm(llm=llm, parser=parser)
    chain = prompt | llm | retry_parser
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:11:05