
如果你不使用LangChain调用大模型,也有很多办法对大模型的输出进行Json格式化,不过就是相对没有LangChain方便。本文会将如何使用Langchain进行Json格式化进行系统性梳理,希望能帮助到你。方法有三种
- 基础方法:提示词进行Json格式化
- 使用JsonOutputParser
- 使用PydanticOutputParser
下面是完整的示例代码,代码里面包含了详细的中文解释,这里就不再文字赘述了。另外,示例代码是可以执行的,建议想学习的同学copy一份下来自己调试一下哦
内容参考自LangChain官网
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: Junius
@Email: see619055@gmail.com
@time: 2025/5/26 16:13
@file: 05.3 Json格式化输出
@project: OpenAppAI
@describe: LangChain JSON格式化输出示例
"""
from typing import List, Dict, Any, Optional
import json
from pydantic import BaseModel, Field
# 导入LangChain相关模块
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import JsonOutputParser, PydanticOutputParser
from langchain_core.pydantic_v1 import BaseModel, Field, validator
from langchain.output_parsers import OutputFixingParser
from langchain_core.exceptions import OutputParserException
# 定义一个模型类用于结构化JSON输出
class Person(BaseModel):
"""人物信息模型"""
name: str = Field(description="人物姓名")
age: int = Field(description="人物年龄")
occupation: str = Field(description="职业")
hobbies: List[str] = Field(description="爱好列表")
@validator("age")
def validate_age(cls, value):
if value < 0 or value > 150:
raise ValueError("年龄必须在0到150之间")
return value
# 初始化LLM模型
llm = ChatOpenAI(
openai_api_base="https://open.bigmodel.cn/api/paas/v4/",
# openai_api_key="你的API密钥", # 使用智谱免费的模型进行学习
model="glm-4-flash-250414"
)
# 示例1: 基础JSON输出
def basic_json_output():
"""基础的JSON输出示例"""
print("\n=== 示例1: 基础JSON输出 ===")
# 创建JSON解析器
json_parser = JsonOutputParser

最低0.47元/天 解锁文章
8653

被折叠的 条评论
为什么被折叠?



