创建Token

重要

历史文档仅适用于百炼1.0版本的APISDK调用,鉴于旧版功能已停止迭代更新,强烈建议您升级至最新版APISDK,具体详情请参考新版本升级说明

新版应用调用文档:应用调用

本节主要介绍如何创建Token,来调用文本生成API。同时,在第4节,提供主流开发语言的调用示例代码,包括Java、Python、Go、C#和Nodejs语言。

功能描述

通过AccessKey、Access Secret KeyAgent Key生成Token。此tokenCompletion API调用时会用到。

当前API需要参考V3版本请求体&签名机制,进行签名再请求,有一定的复杂性,因此建议直接参考第4节《调用代码示例》。

前提条件

首先,请参考文档AccessKey、AppIDAgentKey获取方式获取AK/SK、Agent KeyAppId。如果是RAM账号,请参考文档如何使用业务空间中的RAM账号使用方式。

API详情

创建文本生成访问接口的API token。

  • 协议:HTTP

  • 请求方式:POST

  • 请求地址:https://bailian.cn-beijing.aliyuncs.com

请求参数

参数名

参数类型

是否必填

说明

Request Heders

AgentKey

string

业务空间标识,请参照section#2获取业务空间标识

响应参数

字段名

字段类型

说明

Success

boolean

是否成功(true:成功,false:失败)

Code

string

错误代码

Message

string

错误消息

RequestId

string

请求唯一标识

Data

Data

文本生成结果

Data

Token

string

临时访问令牌

ExpiredTime

long

令牌到期时间, unix时间戳,如1687227783

:在调用后续API时,需将token保存在本地,在过期前10分钟重新获取token,以免每次调用产生token造成性能问题。

调用代码示例

主流的开发语言生成token的调用代码示例,包括Java、Python、Go、C#、Nodejs等。

# 1. 获取和安装sdk
        <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>bailian20230601</artifactId>
          <version>1.1.2</version>
        </dependency>


# 2. 调用代码示例
import com.aliyun.bailian20230601.Client;
import com.aliyun.bailian20230601.models.CreateTokenRequest;
import com.aliyun.bailian20230601.models.CreateTokenResponse;
import com.aliyun.bailian20230601.models.CreateTokenResponseBody;
import com.aliyun.broadscope.bailian.sdk.BaiLianSdkException;
import com.aliyun.teaopenapi.models.Config;
import org.apache.commons.lang3.StringUtils;

public void createToken() {
        String accessKeyId = System.getenv("ACCESS_KEY_ID");
        String accessKeySecret = System.getenv("ACCESS_KEY_SECRET");
        String agentKey = System.getenv("AGENT_KEY");
        String endpoint = "bailian.cn-beijing.aliyuncs.com";

        Config config = new Config().setAccessKeyId(accessKeyId)
                .setAccessKeySecret(accessKeySecret)
                .setEndpoint(endpoint);

        try {
            Client client = new Client(config);
            CreateTokenRequest request = new CreateTokenRequest().setAgentKey(agentKey);
            CreateTokenResponse response = client.createToken(request);
            CreateTokenResponseBody body = response.getBody();
            if (body == null) {
                String error = "create token error";
                throw new RuntimeException(error);
            }

            if (!body.success) {
                String requestId = body.requestId;
                if (StringUtils.isBlank(requestId)) {
                    requestId = response.getHeaders().get("x-acs-request-id");
                }

                String error = "failed to create token, reason: " + body.message + " RequestId: " + requestId;
                throw new RuntimeException(error);
            }

            CreateTokenResponseBody.CreateTokenResponseBodyData data = body.getData();
            if (data == null) {
                throw new RuntimeException("create token error, data is null");
            }

            System.out.printf("token: %s, expiredTime : %d", data.getToken(), data.getExpiredTime());
        } catch (RuntimeException e) {
            throw e;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
# 1. 获取和安装SDK
pip install broadscope-bailian


# 2. 调用代码示例
import os
from alibabacloud_bailian20230601.client import Client
from alibabacloud_bailian20230601.models import CreateTokenRequest
from alibabacloud_tea_openapi.models import Config


def create_token():
    access_key_id = os.environ.get("ACCESS_KEY_ID")
    access_key_secret = os.environ.get("ACCESS_KEY_SECRET")
    agent_key = os.environ.get("AGENT_KEY")
    endpoint = "bailian.cn-beijing.aliyuncs.com"

    config = Config(access_key_id=access_key_id,
                    access_key_secret=access_key_secret,
                    endpoint=endpoint)

    client = Client(config=config)
    token_response = client.create_token(CreateTokenRequest(agent_key=agent_key))
    if token_response.status_code != 200 or token_response.body is None:
        raise RuntimeError("create token error, code=%d" % token_response.status_code)

    token_body = token_response.body
    if not token_body.success:
        request_id = token_body.request_id
        if not request_id:
            request_id = token_response.headers.get("x-acs-request-id")
        raise RuntimeError("create token error, code=%s, message=%s RequestId: %s"
                           % (token_body.code, token_body.message, request_id))

    print('token: %s, expired_time: %s' % (token_body.data.token, token_body.data.expired_time))
1. 获取和安装SDK
go get github.com/alibabacloud-go/bailian-20230601
go get github.com/alibabacloud-go/darabonba-openapi/v2

2. 调用代码示例
import (
	"fmt"
	apiClient "github.com/alibabacloud-go/bailian-20230601/client"
	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	"os"
)


func CreateToken() {
	accessKeyId := os.Getenv("ACCESS_KEY_ID")
	accessKeySecret := os.Getenv("ACCESS_KEY_SECRET")
	agentKey := os.Getenv("AGENT_KEY")
	endpoint := "bailian.cn-beijing.aliyuncs.com"

	config := &openapi.Config{AccessKeyId: &accessKeyId,
		AccessKeySecret: &accessKeySecret,
		Endpoint:        &endpoint}

	tokenClient, err := apiClient.NewClient(config)
	if err != nil {
		fmt.Printf("failed to new client, err: %v\n", err)
		return
	}

	request := &apiClient.CreateTokenRequest{AgentKey: &agentKey}
	result, err := tokenClient.CreateToken(request)
	if err != nil {
		fmt.Printf("failed to create token, err: %v\n", err)
		return
	}

	resultBody := result.Body
	if !(*resultBody.Success) {
		requestId := resultBody.RequestId
		if requestId == nil {
			requestId = result.Headers["x-acs-request-id"]
		}

		errMessage := fmt.Sprintf("Failed to create token, reason: %s RequestId: %s", *resultBody.Message, *requestId)
		fmt.Printf("%v\n", errMessage)
	}

	fmt.Printf("token: %s, expiredTime : %d\n", *resultBody.Data.Token, *resultBody.Data.ExpiredTime)
}
1. 获取和安装SDK
 dotnet add package AlibabaCloud.SDK.Bailian20230601

2. 调用代码示例
using AlibabaCloud.OpenApiClient.Models;
using AlibabaCloud.SDK.Bailian20230601;
using AlibabaCloud.SDK.Bailian20230601.Models;


public void createToken()
        {
            String accessKeyId = Environment.GetEnvironmentVariable("ACCESS_KEY_ID");
            String accessKeySecret = Environment.GetEnvironmentVariable("ACCESS_KEY_SECRET");
            String agentKey = Environment.GetEnvironmentVariable("AGENT_KEY");
            String endpoint = "bailian.cn-beijing.aliyuncs.com";

            Config config = new Config();
            config.AccessKeyId = accessKeyId;
            config.AccessKeySecret = accessKeySecret;
            config.Endpoint = "bailian.cn-beijing.aliyuncs.com";

            Client client = new Client(config);
            CreateTokenRequest request = new CreateTokenRequest();
            request.AgentKey = agentKey;
            CreateTokenResponse response = client.CreateToken(request);

            CreateTokenResponseBody body = response.Body;
            if (body == null)
            {
                throw new ApplicationException("create token error");
            }

            if (body.Success != true)
            {
                String requestId = body.RequestId;
                if (requestId == null)
                {
                    requestId = response.Headers["x-acs-request-id"];
                }

                String error = body.Message + ", requestId: " + requestId;
                throw new ApplicationException(error);
            }

            CreateTokenResponseBody.CreateTokenResponseBodyData data = body.Data;
            if (data == null)
            {
                throw new ApplicationException("create token error, data is null");
            }

            Console.WriteLine("token: {0}, expired time: {1}", data.Token, data.ExpiredTime);
        }
1. 获取和安装sdk
npm install @alicloud/bailian20230601 -S

2. 调用代码示例
const Client = require("@alicloud/bailian20230601").default;

const accessKeyId = process.env.ACCESS_KEY_ID;
const accessKeySecret = process.env.ACCESS_KEY_SECRET;
const agentkey = process.env.AGENT_KEY;
const endpoint = 'bailian.cn-beijing.aliyuncs.com'

const c = new Client({
    accessKeyId: accessKeyId,
    accessKeySecret: accessKeySecret,
    endpoint: endpoint
})

async function createToken() {
    try {
        const response = await c.createToken(
            {agentKey: agentkey}
        );

        const responseBody = response.body
        if (responseBody === null) {
            throw new Error('failed to create token')
        }

        if (responseBody.success !== true) {
            let requestId = responseBody.requestId;
            if (requestId == null) {
                requestId = response.headers["x-acs-request-id"];
            }

            let error = "failed to create token " + responseBody.message + ", requestId: " + requestId;
            throw new Error(error)
        }

        const data = responseBody.data
        if (data === null) {
            throw new Error("failed to create token");
        }

        console.log('token: ' + data.token + ', expiredTime: ' + data.expiredTime);
    } catch (err) {
        console.log('failed to create token, err: ', err);
    }
}

createToken().then(r => {

}).catch(err => {
    console.error(err)
});