阿里云大模型服务平台(百炼)的API调用

阿里云大模型服务平台(百炼)的API调用

阿里云百炼是阿里云推出的一站式大模型应用开发平台。它的核心目标是降低大模型应用开发的门槛,提升开发效率,并保障应用的安全与可控,让企业和开发者能够更快速、更便捷地构建和部署基于大语言模型的智能应用。

1

阿里云百炼平台介绍

阿里云百炼平台的特点

1.强大的模型接入与管理:

  • 集成主流模型: 深度集成阿里云自研的通义千问(Qwen)系列大模型(如Qwen-Max,Qwen-Plus,Qwen-Turbo),并支持接入国内外其他主流大模型(如DeepSeek,Llama,ChatGLM等)。
  • 统一模型服务: 提供标准化的API接口,开发者无需关心底层模型部署细节,即可便捷调用不同模型的能力。
  • 模型评估与选型: 提供工具帮助开发者评估不同模型在特定任务上的性能,辅助模型选型。

2.高效的应用开发工具链:

  • 可视化编排: 提供低代码/无代码的可视化界面。允许开发者通过拖拽组件的方式,灵活编排Prompt提示词、调用插件工具、连接知识库、构建条件分支等,快速搭建复杂的应用逻辑。
  • 提示词(Prompt)优化与调式: 内置强大的Prompt编辑、调试、版本管理和效果评估工具,帮助开发者持续优化提示词效果。
  • 插件扩展能力: 支持开发者自定义插件(Plugin),或使用平台提供的官方/第三方插件(如代码解释器、网络搜索、数据库查询、函数计算调用等),极大地扩展了大模型的能力边界。
  • 知识库增强(RAG):
    • 支持快速创建和管理私有化的知识库(支持多种格式文档上传和解析)。
    • 提供便捷的检索增强生成(RAG)能力,让大模型能够基于企业私有知识进行问答和内容生成,有效解决"幻觉"问题,提升信息准确性和专业性。
    • 支持多文档切分策略、向量化模型选择、相关性过滤等高级配置。
  • Agent框架: 提供构建智能体(Agent)的能力框架,支持定义Agent的目标、工具集、记忆机制等,实现更复制、自主的任务处理流程。

3.便捷的应用部署与管理:

  • 一键发布: 将开发好的应用(如编排好的Prompt流程、Agent或接入知识库的问答系统)快速发布为API服务或Web应用。
  • 灵活部署选项: 支持公有云API调用、专有云部署、甚至私有化部署(将模型和百炼平台能力部署到企业自有的数据中心),满足不同安全合规需求。
  • 资源优化: 提供模型服务实例管理、资源监控与弹性伸缩能力,优化成本。

阿里云百炼平台的适用场景

  • 智能问答与客服: 构建基于企业知识库的智能问答机器人、智能客服助手。
  • 内容生成与创作: 自动生成营销文案、产品描述、报告摘要、邮件、代码注释等。
  • 信息提取与总结: 从长文档、会议记录、网页中快速提取关键信息并生成摘要。
  • 数据分析助手: 通过自然语言与数据库、BI工具交互、查询和分析数据。
  • AI Agent开发: 构建能够自主完成多步骤复杂任务(如订票、信息收集、流程审批)的智能体。
  • 模型评估与测试: 对不同大模型在特定业务场景下的表现进行评测。

阿里云百炼平台API调用大模型示例

调用大模型前提

由于调用大模型需要API Key,因此需要使用阿里云账号开通阿里云百炼并创建API-KEY。

  1. 注册阿里云账号: 如果没有需要注册阿里云账号。
  2. 开通阿里云百炼: 使用阿里云账号前往阿里云百炼控制台(https://bailian.console.aliyun.com/?tab=model#/model-market),开通阿里云百炼的模型服务。
  3. 获取API Key: 前往API-KEY页面(https://bailian.console.aliyun.com/?tab=model#/api-key),单击创建我的API-KEY,即可通过API KEY调用大模型。

阿里云百炼文档中的curl命令调用大模型(OpenAI兼容模式)示例

这里把OpenAI兼容模式作为示例,因为OpenAI使用OpenAI标准接口格式,而DashScope原生模式使用阿里云自研接口规范。因此追求开发效率和生态兼容性,更推荐使用OpenAI兼容模式。

发送API请求示例

curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-plus",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user", 
            "content": "你是谁?"
        }
    ]
}'

大模型响应示例

{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "我是来自阿里云的大规模语言模型,我叫通义千问。"
            },
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null
        }
    ],
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 22,
        "completion_tokens": 16,
        "total_tokens": 38
    },
    "created": 1728353155,
    "system_fingerprint": null,
    "model": "qwen-plus",
    "id": "chatcmpl-39799876-eda8-9527-9e14-2214d641cf9a"
}

使用java语言通过HTTP请求方式调用DeepSeek大模型(OpenAI兼容模式)示例

示例中选择模型名称为deepseek-r1-distill-llama-70b,因为这个限时免费,没有额度限制。本示例代码较为简便,仅验证java通过HTTP调用大模型的可行性,实际上有很多可用框架(如spring ai、LangChain4j)封装后的API可以直接调用。

2

引用依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>3.5.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.38</version>
        </dependency>

大模型请求体封装Vo类

/**
 * 提问大模型的信息vo类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ModelMessageVo {
    /**
     * 角色
     */
    private String role;
    /**
     * 问题
     */
    private String content;
}
/**
 * 请求大模型的请求体
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ModelRequestVo {
    /**
     * 请求的模型名称
     */
    private String model;

    /**
     * 提问大模型的信息vo类集合
     */
    private List<ModelMessageVo> messages;

}

调用大模型测试类

/**
 * 调用大模型测试类
 */
@Slf4j
public class CallLLMTest {
    private static final ObjectMapper mapper = new ObjectMapper();
    /**
     * 调用阿里云百炼平台的URL
     */
    private static final String LLM_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";
    /**
     * API-KEY
     */
    private static final String DASHSCOPE_API_KEY = "Bearer sk-91d4c34904414352b9dfe21115b1781c";
    private static final String CONTENT_TYPT = "application/json";

    public static void main(String[] args) {
        //1.创建HTTP客户端
        HttpResponse<String> response = null;
        try (HttpClient client = HttpClient.newBuilder()
                .version(HttpClient.Version.HTTP_2)
                .connectTimeout(Duration.ofSeconds(120))
                .build()) {
            //2.构建大模型请求体
            //设置角色和问题
            ModelMessageVo messageVo = new ModelMessageVo("user", "0.1+0.2等于多少");
            List<ModelMessageVo> messageVoList = new ArrayList<>(1 << 2);
            messageVoList.add(messageVo);
            ModelRequestVo requestVo = new ModelRequestVo("deepseek-r1-distill-llama-70b", messageVoList);
            String requestVoJsonStr = mapper.writeValueAsString(requestVo);

            //3.创建HttpRequest
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create(LLM_URL))
                    .header("Authorization", DASHSCOPE_API_KEY)
                    .header("Content-Type", CONTENT_TYPT)
                    .POST(HttpRequest.BodyPublishers.ofString(requestVoJsonStr))
                    .timeout(Duration.ofSeconds(120))
                    .build();

            //4.发送请求并接收响应
            response = client.send(request, HttpResponse.BodyHandlers.ofString());
        } catch (IOException | InterruptedException e) {
            log.error("[大模型调用] 调用异常:", e);
            Thread.currentThread().interrupt();
        }
        if (response != null && response.body() != null) {
            log.info("[大模型调用] 调用成功结果: {}", response.body());
        } else {
            log.warn("[大模型调用] 调用异常: 请求体为空");
        }
    }
}

参考资料

https://bailian.console.aliyun.com/

posted @ 2025-08-16 12:25  柯南。道尔  阅读(711)  评论(0)    收藏  举报