在使用SDK/API调用阿里云百炼平台的模型或应用时,通过私网访问阿里云百炼平台可以提高数据传输的安全性及传输效率。您可以通过私网连接(PrivateLink)建立专有网络 VPC(Virtual Private Cloud)与阿里云百炼平台之间的网络连接。
前提条件
已创建了用于访问阿里云百炼平台的VPC,并获取到VPC的名称、VPC下的可用区与交换机信息。具体操作,请参见创建和管理专有网络。
VPC需要满足以下条件:
地域:VPC必须位于阿里云百炼生产环境所在的站点。目前,百炼仅在北京设有生产环境,因此,VPC的地域为“华北2(北京)”。
可用区:在百炼支持接入的可用区内至少选择2个可用区。百炼支持接入的可用区包括北京可用区G、北京可用区H、北京可用区I、北京可用区K及北京可用区L。
交换机:已选的可用区中,每个可用区至少有一个交换机。
已创建安全组。具体操作,请参见创建安全组。
安全组入方向需要开放HTTP(80)和HTTPS(443)端口,用于终端节点所在的VPC通过HTTP协议或者HTTPS协议访问阿里云百炼平台。
步骤一:在VPC中创建连接阿里云百炼平台的终端节点
登录终端节点控制台。
在左侧导航栏,单击终端节点,进入终端节点设置页面。
在顶部菜单栏处,选择终端节点所在的地域“华北2(北京)”。
在接口终端节点页签,单击创建终端节点,并配置以下各项参数,其他参数保持默认即可。
参数名称
参数取值
所属地域
选择“华北2(北京)”。
节点名称
自定义,建议对节点名称进行规范,以便准确识别节点的用途。
例如“通过PVL访问百炼”。
终端节点类型
选择“接口终端节点”。
终端节点服务
选择“阿里云服务”,再选择“com.aliyuncs.dashscope”。
是否开启自定义服务域名:选择“开启”。
专有网络
选择前提条件中已经获取的VPC、VPC下的可用区和交换机、安全组。
建议选择两个可用区。
安全组
可用区与交换机
单击确定创建,完成创建。
获取终端节点的自定义服务域名,用于后续访问阿里云百炼平台。
步骤二:通过终端节点私网访问阿里云百炼平台
用户在自己的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
替换为已经获取的自定义服务域名vpc-cn-beijing.dashscope.aliyuncs.com
。
HTTP
curl -X POST https://vpc-cn-beijing.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": "你是谁?"
}
]
}'
OpenAI Python SDK
import os
from openai import OpenAI
client = OpenAI(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://vpc-cn-beijing.dashscope.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())
DashScope Python SDK
import os
from http import HTTPStatus
# 建议dashscope SDK 的版本 >= 1.14.0
import dashscope
from dashscope import Generation
dashscope.base_http_api_url = "https://vpc-cn-beijing.dashscope.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
))