【AIGC】通义千问生成问答数据集

好久没有更新跟实际应用相关的内容了(主要是因为公司知识产权问题未能立即公开,目前只能挑选一些脱敏内容与各位分享),如标题所示本期将跟大家讲一下如何通过通义千问生成问答数据集的。

在之前使用 Autokeras 的 RNN 训练时提到,数据是人工智能训练的生命线。数据质量和数据体量决定了人工智能模型的好与坏,因此如何大批量获取高质量数据是一件非常头痛的事情。

虽然可以通过一些数据平台获取训练数据,但对于一些小众领域数据量依然不够。面对这种情况我能想到的就只有“用魔法打败魔法”一条路了。思路如下:


如上图所示,第 1 步“找标准化数据”是比较简单的。难就难在第 2 步,除了要对第 1 步产生的数据进行 ETL 处理外,还要思考如何建立相关的数据图谱。这里将会涉及到一些专业领域的内容,由于中药材它是一个非标品,因此不是简单地用字符特征进行提取关联就可以的。

就举一个最简单的例子,同一个药材品种,道地药材和非道地药材在药效、用法、用量上都存在差异,因此需要专家的介入提供专业意见。

然而以上这些都不是今天的重点,就像前面 Autokeras 训练时所说的,我们的目标是要做一个人工智能问答小助手,因此需要大量的问答数据作为训练支撑,现在我们只有标准化的数据,接下来需要通过大模型对标准化数据进行二次构建,生成“问答”数据,也就是上面的第 3 步内容。

但是,目前几乎所有的大模型都需要“买 token”来使用,没钱怎么办(叹气)?就在一筹莫展的时候发现阿里家的通义千问居然有限时免费!!

WechatIMG598.png
PS:现在通义千问也要收费的了,这个图是之前它还免费的时候截的。如果要免费使用,建议还是本地部署一个 Qwen 1.5 72B 开源版本来用吧(至于如何在本地应用 Qwen1.5 开源模型这个放在之后的一篇文章中分享)

(回归正题)赶紧申请 key,写个 python 马上做个信息转换,如下图:

import requests
import time
import json

import os
project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
import sys
sys.path.append(project_dir)
import mysql_util as mu

# 设置递归深度
sys.setrecursionlimit(1000000)

# 每个批次生成 20 条记录
gen_batch_size = 20

# 循环 40 次
loop_batch = 40

# 停顿 5 秒
wait_sec = 5

# 通义千问配置信息
qwen_url = 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation'
qwen_id = 'sk-xxxxxxxxxxxxxxxxxxxx'
qwen_assist = '这里要以英文方式提供前置提示'
qwen_type = 'qwen-max'

"""
通过 MySQL 查询标准数据集并通过循环遍历生成样例问题向 Qwen 进行提问,并将结果保存到数据库
"""


def query_integration_info():
    # 查询获取数据图谱数据集
    result_set = query_standard_dataset()
    # 可以根据自己需要的数据总量定义需要执行的循环次数
    for i in range(1, loop_batch):
        # 遍历数据集(这里只是例子,为了方便理解只提取了部分字段)
        for chinese_name, meridians_chinese, class_chinese in result_set:
            # 记录开始时间和执行批次
            print("Now the "+str(i)
<think>好的,我现在需要帮助用户解决如何通过Java调用通义API实现文件读取的题。用户提到了参考引用中的内容,特别是引用[1]和[2],这些内容涉及Java接入通义API以及集成其他功能。首先,我需要确认通义的API是否直接支持文件读取,或者用户是否需要通过其他方式实现。 根据已有的知识,通常API不会直接处理文件上传,而是通过将文件内容转换为文本或Base64编码来传输。因此,用户可能需要先将文件内容读取到字符串或字节数组中,再通过API发送。接下来,我需要查找通义的API文档,确认其文件处理的具体方式。假设API支持多模态输入,比如文本和图像,用户可能需要将文件内容编码后作为参数传递。 然后,我需要考虑如何在Java中实现文件读取。Java中有多种读取文件的方法,例如使用Files类读取文本文件为字符串,或者使用ImageIO读取图像文件为BufferedImage,再转换为Base64编码。此外,用户可能需要构造合适的请求体,包含文件内容和其他参数,比如模型ID或对话历史。 接下来,示例代码的结构需要清晰,包括文件读取、请求体构建、HTTP客户端发送请求和处理响应。需要确保代码中使用正确的依赖库,比如Apache HttpClient或Spring的WebClient。同时,要注意异常处理和资源释放,比如使用try-with-resources来自动关闭文件流。 用户可能遇到的题包括文件路径错误、编码格式不正确、API密钥未正确设置或网络连接题。在代码中需要加入适当的错误处理机制,比如捕获IOException和运行时异常,并给出提示信息。此外,针对大文件可能需要分块读取或流式处理,但根据引用[1]中的流式返回支持,可能只需处理响应流即可。 最后,生成相关题时要围绕文件处理、API集成、多模态输入等方面,帮助用户进一步扩展应用场景或解决潜在题。需要确保题具有针对性,能够引导用户深入理解相关技术点。</think>以下是基于Java调用通义API实现文件读取的示例代码及步骤说明: ### 一、实现步骤 1. **文件预处理** - 文本文件使用`Files.readString`直接读取 - 图像文件转换为Base64编码: ```java String encodeImage = Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get("test.jpg"))); ``` 2. **构建API请求体** ```java JSONObject payload = new JSONObject(); payload.put("model", "qwen-vl-plus") // 多模态模型 .put("input", new JSONObject() .put("messages", new JSONArray() .put(new JSONObject() .put("role", "user") .put("content", new JSONArray() .put(new JSONObject().put("text", "请分析该文件")) .put(new JSONObject() .put("image", encodeImage) // 或"file_content": textContent ) ) ) ) ); ``` 3. **发送HTTP请求** ```java CloseableHttpClient client = HttpClients.createDefault(); HttpPost post = new HttpPost("https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation"); post.setHeader("Authorization", "Bearer YOUR_API_KEY"); post.setEntity(new StringEntity(payload.toString(), ContentType.APPLICATION_JSON)); try (CloseableHttpResponse response = client.execute(post)) { String result = EntityUtils.toString(response.getEntity()); System.out.println("API响应:" + new JSONObject(result).toString(2)); } ``` ### 二、注意事项 1. 需添加依赖: ```xml <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20231013</version> </dependency> ``` 2. 支持的文件类型: - 文本:txt/csv等(需<10MB) - 图像:jpg/png(需<20MB) - 文档:pdf/docx(需调用特定文档解析接口) 3. 流式响应处理参考[^1]中的Flux实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kida 的技术小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值