# llm2json **Repository Path**: wonderlost/llm2json ## Basic Information - **Project Name**: llm2json - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-21 - **Last Updated**: 2024-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

⚡LLM2Json⚡是一个易于使用的格式化大语言模型输出工具包,它的主要设计思想和部分实现代码参考 LangChain(但输出效果初步测试优于Langchain)。它可以通过自动构建prompts引导大语言模型输出符合JSON语法的返回数据,解决了大语言模型格式化输出、数据交互、前端开发等遇到的数据格式相关问题,使下游的应用程序、GPTs、Agents等开发更加方便快捷。 # 🚀快速开始 > 在线Notebook运行:https://aistudio.baidu.com/projectdetail/7412328?contributionType=1 ## pip 安装 ```bash pip install llm2json ``` ## 第一个 Hello World ### 1. 构造返回数据结构体 ```python from llm2json.prompts.schema import BaseModel, Field class Xiaohongshu(BaseModel): title: str = Field(description="文章标题") context: str = Field(description = "正文内容") keywords: list = Field(description = "关键词") ``` ### 2.  给定返回数据正确案例 > (可选项,但建议配置) ```python correct_example = '{"title":"文章标题", "context":"正文内容", "keywords":["关键词1","关键词2"]}' ``` ### 3. 生成模板 ```python from llm2json.prompts import Templates t = Templates(prompt=""" 请你为商品:<{topic}>写一篇小红书文案。 包括文章标题、正文内容和关键词,同时正文需要包含emoji表情 """, field=Xiaohongshu, correct_example=correct_example) template = t.invoke(topic="文心牌润唇膏") ``` ### 4. 格式化返回结果 > [!NOTE] > > ernieChat() 是基于文心ErnieBot SDK封装的LLM内容生成函数,可替换成任意LLMs接口输入。 > > 具体实现可参考:[GitHub - PaddlePaddle/ERNIE-SDK: ERNIE Bot Agent is a Large Language Model (LLM) Agent Framework, powered by the advanced capabilities of ERNIE Bot and the platform resources of Baidu AI Studio.](https://github.com/PaddlePaddle/ERNIE-SDK) ```python from llm2json.output import JSONParser ernieResult = ernieChat(template) parser = JSONParser() print(parser.to_dict(ernieResult)) ``` ### 5. 生成效果 ```json { 'title': '文心牌润唇膏,滋润保湿不粘腻!', 'context': '✨想要拥有水润双唇吗?试试文心牌润唇膏!💦质地轻盈,一抹即化,保湿效果超赞!💋', 'keywords': ['文心牌润唇膏', '保湿', '轻盈质地', '水润双唇'] } ``` # 📚演示案例 1. 情感分类 ```python class Senta(BaseModel): sentiment: str = Field(description="情感倾向,取值为positive或negative") t = Templates(prompt=""" 我会给你一段评论,请你判断这段评论是正面还是负面的。 评论内容是:{sentiment} """,      field=Senta, ) template = t.invoke(sentiment="蛋糕味道不错,店家服务也很热情") ernieResult = ernieChat(template) parser = JSONParser() print(parser.to_dict(ernieResult)) ``` ```json {'sentiment': 'positive'} ``` 2. 地址提取 ```python class Address(BaseModel): city: str = Field(description="地级市") t = Templates(prompt=""" 我会给你一个地址,请你从中提取出地级市名称。 地址是:{address} """,     field=Address, ) template = t.invoke(address="湖北省武汉市汉阳区琴台大道附近") ernieResult = ernieChat(template) parser = JSONParser() print(parser.to_dict(ernieResult)) ``` ```json {'city': '武汉市'} ``` 3. 生成模拟数据 ```python class Data(BaseModel): name: str = Field(description="姓名") idcode: str = Field(description="18位数的身份证号") sex: str = Field(description="性别") phone: str = Field(description="手机号") email: str = Field(description="邮箱") address: str = Field(description="居住地址") date: str = Field(description="入职日期") t = Templates(prompt=""" 请你根据模板生成入职人员测试数据 """, field=Data, ) template = t.invoke() ernieResult = ernieChat(template) parser = JSONParser() print(parser.to_dict(ernieResult)) ``` ```json { 'name': '张三', 'idcode': '123456789012345678', 'sex': '男', 'phone': '13800138000', 'email': 'zhangsan@example.com', 'address': '北京市朝阳区建国门外大街甲8号', 'date': '2021-11-21' } ``` 4. More examples will be comming soon…