本文将引导您使用SDK调用旧版的百炼RAG检索增强应用。
重要
2024年5月3日阿里云百炼产品全新升级迭代,具体升级内容请参见官方预置应用升级调整公告。此次升级后,旧版的RAG检索增强应用将不再支持新建。如果您的应用创建日期在本次升级之前,您可以继续参考本文来调用您的应用。
迁移方案
企业知识库目前已停止维护,我们建议您尽快将您的私有知识迁移至新版知识库(阿里云暂无提供官方的迁移工具或服务)。新版知识库的功能更加丰富,并支持更多文档格式。
企业知识类型 | 迁移方案 |
文档 | 建议您创建非结构化知识库来管理文档类知识。文档导入方式可选择本地上传或从对象存储OSS导入。 若选择本地上传,后续您需要手动更新知识库;若选择从对象存储OSS导入,后续您可以通过整合对象存储OSS、函数计算FC与百炼的知识库API,实现知识库的自动更新。 本地上传支持通过控制台和API操作;从对象存储OSS导入目前仅支持通过控制台操作。 更多说明,请参见知识库:步骤一导入数据。 |
FAQ | 建议您创建结构化知识库来管理FAQ类知识。您可以通过本地上传文档或基于云数据库RDS构建结构化知识库。 若选择本地上传,后续您需要手动更新知识库;若选择基于云数据库RDS构建,RDS数据表中的数据更新将自动同步至知识库。 目前这两种方式都只能通过控制台进行操作。 更多说明,请参见知识库:步骤一导入数据。 |
创建新版知识库后,您便可以在我的应用中将其与您的智能体应用或者工作流应用关联。更多说明,请参见知识库:步骤四引用知识库。
前提条件
已获取并完成API-KEY配置:您需要获取API Key并配置API Key到环境变量。
已安装SDK:DashScope SDK提供了Python和Java两个版本,安装最新版SDK。
已创建RAG检索增强应用(不再支持新建),并上传企业知识:上传企业知识。
已获取APP_ID:可在我的应用页面目标应用卡片上查看。
请求示例
如果您已完成了DashScope SDK的安装,可以参考以下代码向您的RAG检索增强应用发送请求。
from http import HTTPStatus
from dashscope import Application
response = Application.call(app_id='YOUR_APP_ID',
prompt='API接口说明中, TopP参数改如何传递?',
)
if response.status_code != HTTPStatus.OK:
print('request_id=%s, code=%s, message=%s\n' % (response.request_id, response.status_code, response.message))
else:
print('request_id=%s\n output=%s\n usage=%s\n' % (response.request_id, response.output, response.usage))
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import java.util.List;
public class Main{
public static void ragCall()
throws ApiException, NoApiKeyException, InputRequiredException {
RagApplicationParam param = RagApplicationParam.builder()
.appId("YOUR_APP_ID")
.prompt("API接口说明中, TopP参数改如何传递?")
.build();
Application application = new Application();
ApplicationResult result = application.call(param);
System.out.printf("requestId: %s, text: %s, finishReason: %s\n",
result.getRequestId(), result.getOutput().getText(), result.getOutput().getFinishReason());
if (result.getUsage() != null && result.getUsage().getModels() != null) {
for (ApplicationUsage.ModelUsage usage : result.getUsage().getModels()) {
System.out.printf("modelId: %s, inputTokens: %d, outputTokens: %d\n",
usage.getModelId(), usage.getInputTokens(), usage.getOutputTokens());
}
}
}
public static void main(String[] args) {
try {
ragCall();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.printf("Exception: %s", e.getMessage());
}
System.exit(0);
}
}
响应示例
request_id=131c75de-b53d-9787-a301-1a841dc73eda
output={"text": "在API接口说明中,TopP参数是一个可选的请求参数,用于控制生成过程中 nucleus 采样方法的概率阈值。当调用API时,您可以按照JSON格式将此参数放在请求体(Request Body)中进行传递,其具体格式如下:\n\n```json\n{\n \"TopP\": <float_value>\n}\n```\n\n其中 `<float_value>` 应替换为实际要设置的浮点数数值,取值范围通常在0到1之间。这个参数的作用是,在模型生成文本时,只保留概率加起来大于等于TopP阈值的最可能token集合作为候选集,从而影响生成结果的随机性和多样性。取值越低,生成的文本确定性越高;取值越大,生成的随机性则会增加。", "finish_reason": "stop", "session_id": "25d6b00b574a4740b6e8a97500b556d5", "thoughts": null, "doc_references": null}
usage={"models": [{"model_id": "qwen-max", "input_tokens": 1814, "output_tokens": 165}]}
下一步
关于旧版的RAG检索增强应用API的详细调用文档,详见API详情。
文档内容是否对您有帮助?