使用 Qwen 生成数据模型和进行结构化输出

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
视觉智能开放平台,图像资源包5000点
简介: 本教程展示如何使用CAMEL框架和Qwen模型生成结构化数据。CAMEL是一个强大的多智能体框架,支持复杂的AI任务;Qwen由阿里云开发,具备自然语言处理等先进能力。教程涵盖安装、API密钥设置、定义Pydantic模型,并演示了通过Qwen生成JSON格式的学生信息。最后,介绍了如何利用Qwen生成多个随机学生信息的JSON格式数据。欢迎在[CAMEL GitHub](https://github.com/camel-ai/camel)上为项目点星支持。

使用 Qwen 生成数据模型和结构化输出

你也可以在 colab 这里 查看此教程

本教程演示如何设置和利用 CAMEL 的结构化输出能力,如 JSON 和 Pydantic 对象。

在本教程中,你将探索:

  • CAMEL:一个强大的多智能体框架,支持检索增强生成和多智能体角色扮演场景,可用于复杂的 AI 驱动任务。
  • 结构化输出:大语言模型返回结构化输出的能力。
  • Qwen:Qwen 模型是由阿里巴巴集团 Qwen 团队开发的一系列大语言模型和多模态模型。它专为各种场景设计,集成了先进的 AI 能力,如自然语言理解、文本和视觉处理、编程辅助和对话模拟。

这个设置不仅展示了实际应用,还提供了一个灵活的框架,可以适应各种需要结构化输出和数据生成的场景。

为项目点星

如果你觉得 CAMEL 有用或有趣,请考虑在我们的 CAMEL GitHub 仓库 上给我们点星!你的星标帮助其他人发现这个项目,也激励我们继续改进它。

📦 安装

首先,安装 CAMEL 包及其所有依赖:

!pip install git+https://github.com/camel-ai/camel.git@master

🔑 设置 API 密钥

你需要设置 Qwen 的 API 密钥,以确保工具可以安全地与外部服务交互。

你可以在这里获取 Qwen AI 的 API 密钥。

# Prompt for the API key securely
import os
from getpass import getpass

qwen_api_key = getpass('Enter your API key: ')
os.environ["QWEN_API_KEY"] = qwen_api_key
Enter your API key: ··········

Qwen 数据生成

在本节中,我们将演示如何使用 Qwen 生成结构化数据。Qwen 是 CAMEL 中使用提示工程进行结构化输出的一个很好的例子。它提供了强大的模型,如 Qwen-maxQwen-coder,但目前还不支持自身的结构化输出。我们可以利用它的能力来生成结构化数据。

导入必要的库,定义 Qwen Agent,并定义 Pydantic 类。

from pydantic import BaseModel, Field

from camel.agents import ChatAgent
from camel.messages import BaseMessage
from camel.models import ModelFactory
from camel.types import ModelPlatformType, ModelType
from camel.configs import QwenConfig
# Define Qwen model
qwen_model = ModelFactory.create(
    model_platform=ModelPlatformType.QWEN,
    model_type=ModelType.QWEN_CODER_TURBO,
    model_config_dict=QwenConfig().as_dict(),
)

qwen_agent = ChatAgent(
    model=qwen_model,
    message_window_size=10,
)


# Define Pydantic models
class Student(BaseModel):
    name: str
    age: str
    email: str

首先,让我们尝试在提示中不指定格式。

assistant_sys_msg = BaseMessage.make_assistant_message(
    role_name="Assistant",
    content="你是一个帮助用户生成必要数据信息的助手。",
)

user_msg = """帮助我生成 1 个学生信息的 JSON 格式,格式如下:
{
    "name": "string",
    "age": "string",
    "email": "string"
}"""

response = qwen_agent.step(user_msg)
print(response.msgs[0].content)
当然!以下是学生信息的 JSON 格式示例:

```json
{
    "name": "John Doe",
    "age": "20",
    "email": "johndoe@example.com"
}
```

请随意替换实际数据以满足你的需求。

它做到了,但我们需要扩展我们的提示,而且结果仍然有一些烦人的额外文本,我们仍然需要自己将其解析为有效的 JSON 对象。

一个更优雅的方式是在 .step() 函数中使用 response_format 参数:

qwen_agent.reset()
user_msg = "帮助我生成 1 个学生信息的 JSON 格式"
response = qwen_agent.step(user_msg, response_format=Student)
print(response.msgs[0].content)
{
  "name": "John Doe",
  "age": "20",
  "email": "johndoe@example.com"
}

我们可以直接从 response.msgs[0].parsed 字段中提取 Pydantic 对象:

print(type(response.msgs[0].parsed))
print(response.msgs[0].parsed)
<class '__main__.Student'>
name='John Doe' age='20' email='johndoe@example.com'

太好了,现在我们成功生成了一个学生条目,假设我们想生成更多,我们仍然可以轻松实现。

class StudentList(BaseModel):
    studentList: list[Student]

user_msg = "帮助我生成 5 个随机学生信息的 JSON 格式"
response = qwen_agent.step(user_msg, response_format=StudentList)
print(response.msgs[0].content)
print(response.msgs[0].parsed)
{
  "studentList": [
    {
      "name": "Alice Johnson",
      "age": "22",
      "email": "alice.johnson@example.com"
    },
    {
      "name": "Bob Smith",
      "age": "21",
      "email": "bob.smith@example.com"
    },
    {
      "name": "Charlie Brown",
      "age": "23",
      "email": "charlie.brown@example.com"
    },
    {
      "name": "Diana Prince",
      "age": "24",
      "email": "diana.prince@example.com"
    },
    {
      "name": "Eve Adams",
      "age": "20",
      "email": "eve.adams@example.com"
    }
  ]
}
studentList=[Student(name='Alice Johnson', age='22', email='alice.johnson@example.com'), Student(name='Bob Smith', age='21', email='bob.smith@example.com'), Student(name='Charlie Brown', age='23', email='charlie.brown@example.com'), Student(name='Diana Prince', age='24', email='diana.prince@example.com'), Student(name='Eve Adams', age='20', email='eve.adams@example.com')]

就是这样!我们刚刚使用 基于Qwen的CAMEL Agent生成了 5 个随机学生信息!

🌟 亮点

本教程指导你完成了设置和运行 Qwen 聊天代理并使用它生成结构化数据的过程。

本教程使用的主要工具包括:

  • CAMEL:一个强大的多智能体框架,支持检索增强生成和多智能体角色扮演场景,可用于复杂的 AI 驱动任务。
  • Qwen 数据生成:使用 Qwen 模型生成结构化数据,以供其他应用程序进一步使用。

为项目点星

如果你觉得 CAMEL 有用或有趣,请考虑在 GitHub 上给我们点星!你的星标帮助其他人发现这个项目,也激励我们继续改进它。

相关文章
|
机器学习/深度学习 运维 数据可视化
chat GPT在常用的数据分析方法中的应用
ChatGPT在常用的数据分析方法中有多种应用,包括描述统计分析、探索性数据分析、假设检验、回归分析和聚类分析等。下面将详细介绍ChatGPT在这些数据分析方法中的应用。 1. 描述统计分析: 描述统计分析是对数据进行总结和描述的方法,包括计算中心趋势、离散程度和分布形状等指标。ChatGPT可以帮助你理解和计算这些描述统计指标。你可以向ChatGPT询问如何计算平均值、中位数、标准差和百分位数等指标,它可以给出相应的公式和计算方法。此外,ChatGPT还可以为你提供绘制直方图、箱线图和散点图等图表的方法,帮助你可视化数据的分布和特征。 2. 探索性数据分析: 探索性数据分析是对数据进行探
296 0
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
GraphAgent:自动构建知识图谱,能够处理结构化和非结构化数据,并通过知识图谱展示复杂关系
GraphAgent 是香港大学和香港科技大学联合推出的智能图形语言助手,能够处理结构化和非结构化数据,并通过知识图谱展示复杂关系。
31 9
GraphAgent:自动构建知识图谱,能够处理结构化和非结构化数据,并通过知识图谱展示复杂关系
|
4天前
|
人工智能 文字识别 并行计算
行业实践 | 基于Qwen2-VL实现医疗表单结构化输出
本项目针对不同医院检查报告单样式差异大、手机拍摄质量差等问题,传统OCR识别效果不佳的情况,探索并选定了Qwen2-vl系列视觉语言模型。通过微调和优化,模型在识别准确率上显著提升,能够精准识别并结构化输出报告单信息,支持整张报告单及特定项目的识别。系统采用FastAPI封装接口,Gradio构建展示界面,具备高效、灵活的应用特性。未来该方案可扩展至多种文本识别场景,助力行业数字化转型。
72 20
|
3天前
|
存储 人工智能 API
使用CAMEL框架和Qwen模型自动进行数据获取及报告与知识图谱生成
此笔记本演示如何设置和利用 CAMEL 的检索增强生成(RAG)结合 Milvus 进行高效的网页抓取、多智能体角色扮演任务和知识图谱构建。我们将通过一个使用 Qwen 模型对 2024 年巴黎奥运会的土耳其射手进行全面研究的例子来逐步演示。
|
10天前
|
JSON 人工智能 算法
探索大型语言模型LLM推理全阶段的JSON格式输出限制方法
本篇文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
|
23天前
|
机器学习/深度学习 存储 人工智能
多模态、数据血缘、QA拆分、语音对话等特点解析
知识库问答拆分将文档内容转换为问答对,提高信息检索效率和用户体验,同时便于信息结构化和维护。数据血缘能力支持查看和维护知识来源,确保信息准确性。多模态知识库整合文本、图像等多种数据,提升信息检索质量和用户体验。语音对话功能支持音色选择、语音输入和播报,增强互动性。Rerank排序优化知识库召回结果,提升查询精准度。
41 8
|
2月前
|
JSON 数据可视化 知识图谱
基于百炼 qwen plus 、开源qwen2.5 7B Instruct 建非schema限定的图谱 用于agent tool的图谱形式结构化 文本资料方案
基于百炼 qwen plus 的上市企业ESG图谱构建工作,通过调用阿里云的 OpenAI 服务,从 Excel 文件读取上市公司 ESG 报告数据,逐条处理并生成知识图谱,最终以 YAML 格式输出。该过程包括数据读取、API 调用、结果处理和文件保存等步骤,确保生成的知识图谱全面、动态且结构清晰。此外,还提供了基于 Pyvis 的可视化工具,将生成的图谱以交互式图形展示,便于进一步分析和应用。
384 3
|
3月前
|
机器学习/深度学习 存储 自然语言处理
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
LangChain-22 Text Embedding 续接21节 文本切分后 对文本进行embedding向量化处理 后续可保存到向量数据库后进行检索 从而扩展大模型的能力
64 0
|
7月前
|
SQL JSON NoSQL
【DDIA笔记】【ch2】 数据模型和查询语言 -- 关系模型与文档模型
【6月更文挑战第6天】关系模型是主流数据库模型,以二维表形式展示数据,支持关系算子。分为事务型、分析型和混合型。尽管有其他模型挑战,如网状和层次模型,但关系模型仍占主导。然而,随着大数据增长和NoSQL的出现(如MongoDB、Redis),强调伸缩性、专业化查询和表达力,关系模型的局限性显现。面向对象编程与SQL的不匹配导致“阻抗不匹配”问题,ORM框架缓解但未完全解决。文档模型(如JSON)提供更自然的嵌套结构,适合表示复杂关系,具备模式灵活性和更好的数据局部性。
59 0
|
8月前
|
存储 JSON 自然语言处理
千帆大模型——自定义【知识库】——Embedding式数据
千帆大模型——自定义【知识库】——Embedding式数据
563 0