在使用SDK/API调用阿里云百炼平台的模型或应用时,通过私网访问阿里云百炼平台可以提高数据传输的安全性及传输效率。您可以通过私网连接(PrivateLink)建立专有网络 VPC(Virtual Private Cloud)与阿里云百炼平台之间的网络连接。
前提条件
已创建了用于访问阿里云百炼平台的VPC,并获取到VPC的名称、VPC下的可用区与交换机信息。具体操作,请参见创建和管理专有网络。
VPC需要满足以下条件:
地域:VPC必须位于阿里云百炼生产环境所在的站点。目前:
百炼公共云的生产环境没有地域限制。
百炼金融云仅在上海设有生产环境,VPC的地域为“华东 2 金融云”。
重要金融云用户请联系技术支持人员添加白名单。
可用区:在百炼支持接入的可用区内至少选择2个可用区。
交换机:已选的可用区中,每个可用区至少有一个交换机。
已创建安全组。具体操作,请参见创建安全组。
安全组入方向需要开放HTTP(80)和HTTPS(443)端口,用于终端节点所在的VPC通过HTTP协议或者HTTPS协议访问阿里云百炼平台。具体操作,请参见添加安全组规则。
步骤一:在VPC中创建连接阿里云百炼平台的终端节点
公共云
登录终端节点控制台。
在左侧导航栏,单击终端节点,进入终端节点设置页面。
在顶部菜单栏处,选择终端节点所在的地域“华北2(北京)”。
在接口终端节点页签,单击创建终端节点,并配置以下各项参数,其他参数保持默认即可。
参数名称
参数取值
所属地域
选择“华北2(北京)”。
节点名称
自定义,建议对节点名称进行规范,以便准确识别节点的用途。
例如“通过PVL访问百炼”。
终端节点类型
选择“接口终端节点”。
终端节点服务
选择“阿里云服务”,再选择“com.aliyuncs.dashscope”。
是否开启自定义服务域名:选择“开启”。
专有网络
选择前提条件中已经获取的VPC、VPC下的可用区和交换机、安全组。
建议选择两个可用区。
安全组
可用区与交换机
单击确定创建,完成创建。
获取终端节点的默认服务域名,用于后续访问阿里云百炼平台。
金融云
登录终端节点控制台。
在左侧导航栏,单击终端节点,进入终端节点设置页面。
在顶部菜单栏处,选择终端节点所在的地域“华东 2 金融云”。
在接口终端节点页签,单击创建终端节点,并配置以下各项参数,其他参数保持默认即可。
参数名称
参数取值
所属地域
选择“华东 2 金融云”。
节点名称
自定义,建议对节点名称进行规范,以便准确识别节点的用途。
例如“通过PVL访问百炼”。
终端节点类型
选择“接口终端节点”。
终端节点服务
选中“选择可用服务”,在“终端节点服务ID”列表中选中目标终端节点服务ID,例如“epsrv-zm0qfzkk1lcxfr******”。
是否开启自定义服务域名:默认选择“不开启”。
专有网络
选择前提条件中已经获取的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
替换为已经获取的默认服务域名,例如:http://ep-2zei6917b47eed******.dashscope.cn-beijing.privatelink.aliyuncs.com/api/v1/services/aigc/text-generation/generation
。
如果VPC的地域为“华北2(北京)”,您还可以将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
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": "你是谁?"
}
]
}'
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="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())
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 = "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
))
金融云
例如,通过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
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": "你是谁?"
}
]
}'
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="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())
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 = "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
))