通过终端节点私网访问阿里云百炼平台

更新时间:2025-03-17 01:57:24

在使用SDK/API调用阿里云百炼平台的模型或应用时,通过私网访问阿里云百炼平台可以提高数据传输的安全性及传输效率。您可以通过私网连接(PrivateLink)建立专有网络 VPC(Virtual Private Cloud)与阿里云百炼平台之间的网络连接。

前提条件

  • 已创建了用于访问阿里云百炼平台的VPC,并获取到VPC的名称、VPC下的可用区与交换机信息。具体操作,请参见创建和管理专有网络

    VPC需要满足以下条件:

    • 地域:VPC必须位于阿里云百炼生产环境所在的站点,其他地域可以使用CEN组网搭配终端节点的方式跨地域私网访问百炼。目前:

      • 百炼公共云仅在北京设有生产环境,VPC的地域为“华北2(北京)”。

      • 百炼金融云仅在上海设有生产环境,VPC的地域为“华东 2 金融云”。

        重要

        金融云用户请联系技术支持人员添加白名单。

    • 可用区:在百炼支持接入的可用区内至少选择2个可用区。

    • 交换机:已选的可用区中,每个可用区至少有一个交换机。

  • 已创建安全组。具体操作,请参见创建安全组

    安全组入方向需要开放HTTP(80)和HTTPS(443)端口,用于终端节点所在的VPC通过HTTP协议或者HTTPS协议访问阿里云百炼平台。具体操作,请参见添加安全组规则

步骤一:在VPC中创建连接阿里云百炼平台的终端节点

公共云
金融云
  1. 登录终端节点控制台

  2. 在左侧导航栏,单击终端节点,进入终端节点设置页面。

  3. 在顶部菜单栏处,选择终端节点所在的地域“华北2(北京)”。

    image

  4. 接口终端节点页签,单击创建终端节点,并配置以下各项参数,其他参数保持默认即可。

    参数名称

    参数取值

    所属地域

    选择“华北2(北京)”。

    节点名称

    自定义,建议对节点名称进行规范,以便准确识别节点的用途。

    例如“通过PVL访问百炼”。

    终端节点类型

    选择“接口终端节点”。

    终端节点服务

    选择“阿里云服务”,再选择“com.aliyuncs.dashscope”。

    是否开启自定义服务域名:选择“开启”。

    image

    专有网络

    选择前提条件中已经获取的VPC、VPC下的可用区和交换机、安全组。

    建议选择两个可用区。

    安全组

    可用区与交换机

  5. 单击确定创建,完成创建。

  6. 获取终端节点的默认服务域名,用于后续访问阿里云百炼平台。image

  1. 登录终端节点控制台

  2. 在左侧导航栏,单击终端节点,进入终端节点设置页面。

  3. 在顶部菜单栏处,选择终端节点所在的地域“华东 2 金融云”。

    image

  4. 接口终端节点页签,单击创建终端节点,并配置以下各项参数,其他参数保持默认即可。

    参数名称

    参数取值

    所属地域

    选择“华东 2 金融云”。

    节点名称

    自定义,建议对节点名称进行规范,以便准确识别节点的用途。

    例如“通过PVL访问百炼”。

    终端节点类型

    选择“接口终端节点”。

    终端节点服务

    选中“选择可用服务”,在“终端节点服务ID”列表中选中目标终端节点服务ID,例如“epsrv-zm0qfzkk1lcxfr******”。

    是否开启自定义服务域名:默认选择“不开启”。

    image

    专有网络

    选择前提条件中已经获取的VPC、VPC下的可用区和交换机、安全组。

    建议选择两个可用区。image

    安全组

    可用区与交换机

  5. 单击确定创建,完成创建。

  6. 获取终端节点的默认服务域名,用于后续访问阿里云百炼平台。

    image

步骤二:通过终端节点私网访问阿里云百炼平台

用户在自己的VPC中通过SDK/API调用阿里云百炼平台的模型或应用时,如果待访问的URL采用HTTPS协议,则可以将URL中公网域名dashscope.aliyuncs.com替换为已经获取到的默认服务域名,从而直接通过私网访问百炼平台。

公共云
金融云

例如,通过HTTP调用通义千问文本输入模型时,将POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation中的dashscope.aliyuncs.com替换为已经获取的默认服务域名,例如:http://ep-2zei6917b47eed******.dashscope.cn-beijing.privatelink.aliyuncs.com/api/v1/services/aigc/text-generation/generation

说明

您还可以将POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation中公网域名dashscope.aliyuncs.com替换为已经获取到的自定义服务域名vpc-cn-beijing.dashscope.aliyuncs.com

您需要已获取API Key配置API Key到环境变量。如需要直接传入 API-Key,请将$DASHSCOPE_API_KEY 替换为您的 API-Key。

HTTP
OpenAI Python SDK
DashScope Python SDK
DashScope Java SDK
curl -X POST http://ep-2zei6917b47eed******.dashscope.cn-beijing.privatelink.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": "你是谁?"
        }
    ]
}'
import os
from openai import OpenAI

client = OpenAI(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="http://ep-2zei6917b47eed******.dashscope.cn-beijing.privatelink.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen-plus",  # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
    messages=[
        {'role': 'system', 'content': 'You are a helpful assistant.'},
        {'role': 'user', 'content': '你是谁?'}],
    )   
print(completion.model_dump_json())

import os
from http import HTTPStatus
# 建议dashscope SDK 的版本 >= 1.14.0
import dashscope
from dashscope import Generation


dashscope.base_http_api_url = "http://ep-2zei6917b47eed******.dashscope.cn-beijing.privatelink.aliyuncs.com/api/v1"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
messages = [{
        'role': 'user', 'content': '你是谁?'
    }]
response = Generation.call(model="qwen-max",
                            messages=messages,
                            result_format='message')
if response.status_code == HTTPStatus.OK:
    print(response)
else:
    print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
        response.request_id, response.status_code,
        response.code, response.message
    ))
// 建议DashScope SDK的版本 >= 2.12.0
import java.util.Arrays;

import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.protocol.Protocol;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
        Generation gen = new Generation(Protocol.HTTP.getValue(), "http://ep-2zei6917b47eed******.dashscope.cn-beijing.privatelink.aliyuncs.com/api/v1");
        Message systemMsg = Message.builder()
                .role(Role.SYSTEM.getValue())
                .content("You are a helpful assistant.")
                .build();
        Message userMsg = Message.builder()
                .role(Role.USER.getValue())
                .content("你是谁?")
                .build();
        GenerationParam param = GenerationParam.builder()
                // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
                .model("qwen-plus")
                .messages(Arrays.asList(systemMsg, userMsg))
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                .build();
        return gen.call(param);
    }
    public static void main(String[] args) {
        try {
            GenerationResult result = callWithMessage();
            System.out.println(JsonUtils.toJson(result));
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            // 使用日志框架记录异常信息
            System.err.println("An error occurred while calling the generation service: " + e.getMessage());
        }
        System.exit(0);
    }
}

重要:如果您在云解析DNS控制台将默认服务域名添加为内置权威域名,那么您也可以使用https://默认服务域名/api/v1/services/aigc/text-generation/generation调用服务,例如:https://ep-2zei6917b47eed******.dashscope.cn-beijing.privatelink.aliyuncs.com/api/v1/services/aigc/text-generation/generationimage

例如,通过HTTP调用通义千问文本输入模型时,将POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation中的dashscope.aliyuncs.com替换为已经获取的默认服务域名,例如:http://ep-zm0i0c6d276715******.epsrv-zm0qfzkk1lcxfr3efci8.cn-shanghai-finance-1.privatelink.aliyuncs.com/api/v1/services/aigc/text-generation/generation

您需要已获取API Key配置API Key到环境变量。如需要直接传入 API-Key,请将$DASHSCOPE_API_KEY 替换为您的 API-Key。

HTTP
OpenAI Python SDK
DashScope Python SDK
DashScope Java SDK
curl -X POST http://ep-zm0i0c6d276715******.epsrv-zm0qfzkk1lcxfr3efci8.cn-shanghai-finance-1.privatelink.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": "你是谁?"
        }
    ]
}'
import os
from openai import OpenAI

client = OpenAI(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="http://ep-zm0i0c6d276715******.epsrv-zm0qfzkk1lcxfr3efci8.cn-shanghai-finance-1.privatelink.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen-plus",  # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
    messages=[
        {'role': 'system', 'content': 'You are a helpful assistant.'},
        {'role': 'user', 'content': '你是谁?'}],
    )   
print(completion.model_dump_json())

import os
from http import HTTPStatus
# 建议dashscope SDK 的版本 >= 1.14.0
import dashscope
from dashscope import Generation


dashscope.base_http_api_url = "http://ep-zm0i0c6d276715******.epsrv-zm0qfzkk1lcxfr3efci8.cn-shanghai-finance-1.privatelink.aliyuncs.com/api/v1"
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
messages = [{
        'role': 'user', 'content': '你是谁?'
    }]
response = Generation.call(model="qwen-max",
                            messages=messages,
                            result_format='message')
if response.status_code == HTTPStatus.OK:
    print(response)
else:
    print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
        response.request_id, response.status_code,
        response.code, response.message
    ))
// 建议DashScope SDK的版本 >= 2.12.0
import java.util.Arrays;

import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.protocol.Protocol;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
        Generation gen = new Generation(Protocol.HTTP.getValue(), "http://ep-zm0i0c6d276715******.epsrv-zm0qfzkk1lcxfr3efci8.cn-shanghai-finance-1.privatelink.aliyuncs.com/api/v1");
        Message systemMsg = Message.builder()
                .role(Role.SYSTEM.getValue())
                .content("You are a helpful assistant.")
                .build();
        Message userMsg = Message.builder()
                .role(Role.USER.getValue())
                .content("你是谁?")
                .build();
        GenerationParam param = GenerationParam.builder()
                // 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // 此处以qwen-plus为例,可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
                .model("qwen-plus")
                .messages(Arrays.asList(systemMsg, userMsg))
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                .build();
        return gen.call(param);
    }
    public static void main(String[] args) {
        try {
            GenerationResult result = callWithMessage();
            System.out.println(JsonUtils.toJson(result));
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            // 使用日志框架记录异常信息
            System.err.println("An error occurred while calling the generation service: " + e.getMessage());
        }
        System.exit(0);
    }
}

重要:如果您在云解析DNS控制台将默认服务域名添加为内置权威域名,那么您也可以使用https://默认服务域名/api/v1/services/aigc/text-generation/generation调用服务,例如:https://ep-zm0i0c6d276715******.epsrv-zm0qfzkk1lcxfr3efci8.cn-shanghai-finance-1.privatelink.aliyuncs.com/api/v1/services/aigc/text-generation/generationimage

相关文档

  • 本页导读 (1)
  • 前提条件
  • 步骤一:在VPC中创建连接阿里云百炼平台的终端节点
  • 步骤二:通过终端节点私网访问阿里云百炼平台
  • 相关文档
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等