智能对话机器人(通义版)会话接口API使用Quick Start

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
视觉智能开放平台,分割抠图1万点
简介: 本文主要演示了如何使用python脚本快速调用智能对话机器人API接口,在参数获取的部分给出了具体的获取位置截图,这部分容易出错,第一次使用务必仔细参考接入参数获取的位置。

一、大模型会话接口集成概述

官方API参考地址

图片.png

二、API接口调用参数获取

  • 2.1 ACCESS_KEY_ID、ACCESS_KEY_SECRET参数获取地址

图片.png

  • 2.2 AgentKey

业务空间 key,不设置则访问默认业务空间,key 值在主账号业务管理页面获取

图片.png

  • 2.3 instance_id

图片.png

三、Python Code Sample

# -*- coding: utf-8 -*-

import hashlib
import time
import uuid
from alibabacloud_tea_openapi.client import Client as OpenApiClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_openapi_util.client import Client as OpenApiUtilClient
import json
import requests


class Sample:
    def __init__(self):
        pass

    # 参数设置
    ACCESS_KEY_ID = 'LTAI**********'
    ACCESS_KEY_SECRET = '8RQfmiwwn***********'
    @staticmethod
    def create_client() -> OpenApiClient:
        """
        使用AK&SK初始化账号Client
        @return: Client
        @throws Exception
        """
        # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
        config = open_api_models.Config(
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
            access_key_id=Sample.ACCESS_KEY_ID,
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
            access_key_secret=Sample.ACCESS_KEY_SECRET
        )
        # Endpoint 请参考 https://api.aliyun.com/product/Chatbot
        config.endpoint = f'chatbot.cn-shanghai.aliyuncs.com'
        return OpenApiClient(config)

    @staticmethod
    def get_sign(stream_secret, timestamp) -> str:
        """
        计算签名
        :param stream_secret:
        :param timestamp:
        :return:
        """
        text_to_hash = f"streamSecret={stream_secret}&timestamp={timestamp}"
        md5_hash = hashlib.md5(text_to_hash.encode('utf-8')).hexdigest()
        return md5_hash


    @staticmethod
    def create_ApplyForStreamAccessToken_api_info() -> open_api_models.Params:
        """
        API 相关
        @param path: string Path parameters
        @return: OpenApi.Params
        """
        params = open_api_models.Params(
            # 接口名称,
            action='ApplyForStreamAccessToken',
            # 接口版本,
            version='2022-04-08',
            # 接口协议,
            protocol='HTTPS',
            # 接口 HTTP 方法,
            method='POST',
            auth_type='AK',
            style='RPC',
            # 接口 PATH,
            pathname=f'/',
            # 接口请求体内容格式,
            req_body_type='json',
            # 接口响应体内容格式,
            body_type='json'
        )
        return params

    @staticmethod
    def ApplyForStreamAccessToken(
            AgentKey:str,
        ) -> str:
            client = Sample.create_client()
            params = Sample.create_ApplyForStreamAccessToken_api_info()
            # query params
            queries = {
   
   }
            queries['AgentKey'] = AgentKey
            # runtime options
            runtime = util_models.RuntimeOptions()
            request = open_api_models.OpenApiRequest(
                query=OpenApiUtilClient.query(queries)
            )
            # 复制代码运行请自行打印 API 的返回值
            # 返回值实际为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。
            res = client.call_api(params, request, runtime)
            return res['body']

    @staticmethod
    def create_request_body(message_id, instance_id, utterance):
        """
        构造请求body
        :param message_id:消息message id
        :param instance_id:机器人id
        :param utterance:实际内容
        :return:
        """
        body = {
   
   
            "messageId": message_id,
            "action": "TongyiBeebotChat",
            "version": "2022-04-08",
            "data": [
                {
   
   
                    "type": "JSON_TEXT",
                    "value": json.dumps({
   
   
                        "InstanceId": instance_id,
                        "Utterance": utterance
                    },ensure_ascii=False)
                }
            ]
        }
        return body

    @staticmethod
    def sse_request(url, payload):
        """
        构建SSE请求
        :param url: 请求的URL
        :param payload: 要发送的数据
        :return: None
        """
        # 创建会话
        session = requests.Session()

        # 请求头
        headers = {
   
   
            'Content-Type': 'application/json'
        }

        # 使用 POST 请求获取 SSE 线
        with session.post(url, headers=headers, data=json.dumps(payload), stream=True) as response:
            # 确保请求成功
            response.raise_for_status()

            # 持续读取服务器发来的事件
            for line in response.iter_lines():
                if line:
                    # 处理每一行数据
                    data = line.decode('utf-8')
                    print(f'Received: {data}')


if __name__ == '__main__':
    AgentKey = "f6b6af483***********_p_beebot_public" # 业务空间key
    res = Sample.ApplyForStreamAccessToken(AgentKey) # 1、调用ApplyForStreamAccessToken接口
    AccessToken = res['AccessToken']
    StreamSecret = res['StreamSecret']
    ChannelId = res['ChannelId']
    time_millis = int(time.time() * 1000)
    sign = Sample.get_sign(StreamSecret, time_millis)  # 2、计算会话接口签名
    url_template = "https://alime-ws.aliyuncs.com/sse/paas4Json/{AccessToken}/{ChannelId}/{Sign}/{Timestamp}"
    url = url_template.format(AccessToken=AccessToken, ChannelId=ChannelId, Sign=sign, Timestamp=time_millis)

    # 生成一个随机的UUID
    messageId = str(uuid.uuid4())
    instance_id = "chatbot-cn-Aei********" # 机器人id
    utterance = "你有什么技能?" # 实际问题
    payload = Sample.create_request_body(messageId, instance_id, utterance)
    Sample.sse_request(url, payload) # 3、发送SSE请求,获取流式响应结果
  • 测试结果:
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":false,\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"SequenceId\":\"0e99be8a5ec444359a54405870cc96cf\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"aad1d419-45cb-4f8d-9f24-a0c12ca62749","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"da038f26ab9e4ad7acd8087a5b76c6e3\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"5fb4a490-e0d7-4832-b460-287724d557da","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"67b712bc3a2e477aaef56beca30e441a\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"75e24897-0249-4971-b476-f366c1b16a16","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"245c83ddd9584a5cb771f4f9c07351ca\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"c137f85c-1403-4395-887a-df876d37190a","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"16b98b73c83e404fb10424e14307c089\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"6a3ae208-cb45-46ba-b319-d9f0a09ce415","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"我是个大模型,能够\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"65e6de0c377d4934803b258449fefbd0\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"316abed4-7c0e-42b2-bbf2-9451948a1ad6","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"我是个大模型,能够回答问题、创作文字,比如写\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"3e297b0afb64430d9982bbd3a190563a\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"97e66246-4159-4ce2-990e-db035ab64698","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"我是个大模型,能够回答问题、创作文字,比如写故事、写公文、写邮件\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"d10ee630e84f4995a0755a1448b319e1\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"95af7cc8-5439-4c50-8893-d62877fc33f7","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"我是个大模型,能够回答问题、创作文字,比如写故事、写公文、写邮件、写剧本等等,还能表达观点\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"371ac0ab34a94bc2acea1056b4939099\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"3180f1c0-b901-4189-b306-c6ff4f0a25de","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"我是个大模型,能够回答问题、创作文字,比如写故事、写公文、写邮件、写剧本等等,还能表达观点,玩游戏等。\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"044f4dadc62f4d938032b49a2bbd719b\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"4e1fcd22-2140-44d1-adde-f3ecb754939e","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"我是个大模型,能够回答问题、创作文字,比如写故事、写公文、写邮件、写剧本等等,还能表达观点,玩游戏等。\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"89c05efbd4b342c9a4841e7a2ce87617\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":false}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"7dd5c7f3-b2ed-42a9-a130-b29f9797e7cd","success":true}
Received: data:{
   
   "data":[{
   
   "type":"JSON_TEXT","value":"{\"IsAIGC\":true,\"MessageBody\":{\"DirectMessageBody\":{\"ContentType\":\"RICH_TEXT\",\"Ext\":{},\"SentenceList\":[{\"Content\":\"我是个大模型,能够回答问题、创作文字,比如写故事、写公文、写邮件、写剧本等等,还能表达观点,玩游戏等。\"}]},\"Type\":\"Direct\",\"VoiceConfig\":{}},\"MessageId\":\"aad1d419-45cb-4f8d-9f24-a0c12ca62749\",\"QuerySegList\":[\"你\",\"有\",\"什么\",\"技能\",\"?\"],\"SequenceId\":\"6939e0f6569345799e2b19496842ea27\",\"SessionId\":\"dfa8ed43a2584d6c867a1c9b5baee490\",\"Source\":\"NON_STRUCTURAL_KNOWLEDGE\",\"StreamEnd\":true}"}],"messageId":"6bd684db-7259-4060-88fc-de562d2c86e7","requestId":"0b7d7915-1d68-43ce-a634-bbf44ff98cc2","success":true}

更多参考

大模型会话接口集成概述

相关实践学习
阿里巴巴智能语音交互技术与应用
智能语音交互,是基于语音识别、语音合成、自然语言理解等技术,为企业在多种实际应用场景下,赋予产品“能听、会说、懂你”式的智能人机交互体验。适用于多个应用场景中,包括智能问答、智能质检、法庭庭审实时记录、实时演讲字幕、访谈录音转写等。 本课程主要讲解智能语音相关技术,包括语音识别、人机交互、语音合成等。  
相关文章
|
22天前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
7天前
|
搜索推荐 数据挖掘 API
微店商品详情接口(微店API系列)
微店商品详情接口是微店API的重要组成部分,帮助开发者和商家获取商品的详细信息(如标题、价格、库存等),并将其集成到应用程序或数据分析系统中。该接口支持HTTP GET/POST请求,返回JSON/XML格式数据,需通过AppKey和AppSecret进行身份验证和签名加密。应用场景包括商品信息同步、数据分析与市场调研、个性化推荐系统等,助力商业决策和业务拓展。
32 13
|
9天前
|
供应链 数据挖掘 API
1688app 商品详情接口系列(1688API)
1688作为国内知名批发采购平台,提供了一系列商品详情接口(API),助力企业和开发者获取商品基础、价格、库存及供应商信息。通过Python示例代码展示如何调用这些接口,应用场景涵盖采购决策辅助、数据分析与市场调研、电商平台整合及供应链管理系统的优化,为企业和采购商提供有力的数据支持,提升业务效率和竞争力。
55 15
|
16天前
|
JSON 搜索推荐 API
京东店铺所有商品接口系列(京东 API)
本文介绍如何使用Python调用京东API获取店铺商品信息。前期需搭建Python环境,安装`requests`库并熟悉`json`库的使用。接口采用POST请求,参数包括`app_key`、`method`、`timestamp`、`v`、`sign`和业务参数`360buy_param_json`。通过示例代码展示如何生成签名并发送请求。应用场景涵盖店铺管理、竞品分析、数据统计及商品推荐系统,帮助商家优化运营和提升竞争力。
61 23
|
8天前
|
JSON 数据挖掘 开发者
1688 商品评论接口系列(1688API)
1688商品评论接口助力电商数据分析与优化。通过该接口,开发者可获取指定商品的评论数据(如昵称、内容、评分等),支持情感分析和质量反馈收集。接口采用HTTP GET/POST请求,返回JSON格式数据。Python示例代码展示如何调用接口并处理响应。应用场景包括商家产品优化、客户服务提升、市场调研及电商平台数据分析。
|
8天前
|
供应链 数据挖掘 BI
1688 买家订单,订单物流,订单回传接口系列(1688 寻源通 API)
1688作为国内领先的批发采购平台,提供了买家订单、订单物流及订单回传三大API接口,助力企业实现订单管理、物流跟踪和信息反馈的自动化。通过这些接口,企业可以获取订单详情、物流状态,并将处理结果回传至平台,提升运营效率。Python示例代码展示了如何使用这些接口进行数据交互,适用于电商内部管理、物流跟踪及数据分析等场景。
|
16天前
|
JSON 缓存 API
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
32 12
|
14天前
|
供应链 监控 数据挖掘
1688 商品详情接口系列(1688 API)
1688商品详情接口系列(1688 API)是阿里巴巴旗下批发电商平台提供的强大工具,支持开发者、商家获取商品的详细信息。通过商品基本信息、价格库存、图片和描述查询接口,用户可以精准高效地获取商品数据,涵盖电商运营、数据分析、市场调研等领域,极大提升工作效率。示例代码展示了如何使用Python调用这些接口,助力电商平台整合、价格监控、商品展示优化及库存管理等应用场景。
|
28天前
|
JSON API 数据格式
京东商品SKU价格接口(Jd.item_get)丨京东API接口指南
京东商品SKU价格接口(Jd.item_get)是京东开放平台提供的API,用于获取商品详细信息及价格。开发者需先注册账号、申请权限并获取密钥,随后通过HTTP请求调用API,传入商品ID等参数,返回JSON格式的商品信息,包括价格、原价等。接口支持GET/POST方式,适用于Python等语言的开发环境。
83 11
|
19天前
|
Web App开发 JSON 测试技术
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。