快速开始

本文将引导您使用SDK调用旧版的百炼RAG检索增强应用。

重要

202453日阿里云百炼产品全新升级迭代,具体升级内容请参见官方预置应用升级调整公告。此次升级后,旧版的RAG检索增强应用将不再支持新建。如果您的应用创建日期在本次升级之前,您可以继续参考本文来调用您的应用。

  • 了解如何将您的企业知识库迁移至新版知识库并构建RAG应用(新),详见下方迁移方案

  • 了解如何通过HTTP接口或SDK在您的业务代码中调用RAG应用(新),详见应用调用

迁移方案

企业知识库目前已停止维护,我们建议您尽快将您的私有知识迁移至新版知识库(阿里云暂无提供官方的迁移工具或服务)。新版知识库的功能更加丰富,并支持更多文档格式。

企业知识类型

迁移方案

文档

建议您创建非结构化知识库来管理文档类知识。文档导入方式可选择本地上传或从对象存储OSS导入。

若选择本地上传,后续您需要手动更新知识库;若选择从对象存储OSS导入,后续您可以通过整合对象存储OSS、函数计算FC与百炼的知识库API,实现知识库的自动更新。

本地上传支持通过控制台和API操作;从对象存储OSS导入目前仅支持通过控制台操作。

更多说明,请参见知识库:步骤一导入数据

FAQ

建议您创建结构化知识库来管理FAQ类知识。您可以通过本地上传文档或基于云数据库RDS构建结构化知识库。

若选择本地上传,后续您需要手动更新知识库;若选择基于云数据库RDS构建,RDS数据表中的数据更新将自动同步至知识库。

目前这两种方式都只能通过控制台进行操作。

更多说明,请参见知识库:步骤一导入数据

创建新版知识库后,您便可以在我的应用中将其与您的智能体应用或者工作流应用关联。更多说明,请参见知识库:步骤四引用知识库

前提条件

请求示例

如果您已完成了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详情