1-讯飞星火大模型API调用示例解析

1官网链接

  1. 比赛官网:2024 iFLYTEK A.I.开发者大赛-讯飞开放平台 (xfyun.cn);
  2. 控制台官网:控制台-讯飞开放平台 (xfyun.cn);

2星火模型python调用示例

  1. 示例链接:https://xfyun-doc.xfyun.cn/lc-sp-PythonDemo-1716370485358.zip;
  2. 使用上述示例时,执行到on_close时报参数数量不匹配的错误;因此将def on_close(ws):改为def on_close(ws,*args):;以接收剩余的多个参数;
    1. 修改之后的补充了一些备注的示例文件链接:1-websocket调用星火大模型-简单示例-无上下文.py;
    2. 注意:要换成自己的appidapi_secretapi_key

2.1步骤总结

  1. 初始化参数对象,包括设置自己的api、连接的大模型的接口地址等;对应Ws_Param.__init__函数;

  2. 将连接地址与自己的鉴权信息进行拼接,生成最终的请求用的url【详细解释见官网WebSocket协议通用鉴权URL生成说明 | 讯飞开放平台文档中心 (xfyun.cn)】;对应Ws_Param.create_url方法;

  3. 使用上面的url创建一个WebSocketApp对象,其中传入了自己实现了的四个回调函数(on_message, on_error, on_close, on_open);接着就可以通过run_forever方法启动一个websocket客户端;

    1. 虽然这个方法可以建立永久的连接,但是在官网说了星火认知大模型接口默认采用短链接的模式,即接口每次将结果完整返回给用户后会主动断开链接,用户在下次发送请求的时候需要重新握手链接。

    2. 收到websocket连接建立时会先调用on_open方法:

      1. 该方法先开启一个新的线程,将使用WebSocket对象的send方法将消息发送到服务器
      2. 消息是一个json格式的字符串,由gen_params方法生成并返回;
      3. 关于消息的各个部分的含义,详见星火认知大模型Web API文档 | 讯飞开放平台文档中心 (xfyun.cn)的1.3.1 请求参数部分的解释;
    3. 之后将收到来自服务器的消息,因此将调用on_message方法:

      1. 通过debug可以发现,这里收到的消息是类似流式输出的方式,每次只接收完整回复的一小部分内容,如下图所示;因此on_message方法将被多次调用,直到所有的回复都被接收;

        在这里插入图片描述

      2. 关于模型回复的消息各个部分的含义详见星火认知大模型Web API文档 | 讯飞开放平台文档中心 (xfyun.cn)的1.4 接口响应部分;

      3. 当最后一部分消息返回之后,上图中的status=2

      4. 之后会直接调用WebSocketApp对象的close()方法关闭连接;

      5. 下图为一次连接请求完成之后收到的完整回复:

        在这里插入图片描述

    4. 最后,收到websocket关闭时将调用on_close方法打印一些信息;

3星火模型python调用示例-带上下文

  1. 示例链接:https://xfyun-doc.xfyun.cn/lc-sp-PythonDemo(content)-1716370504832.zip;
  2. 加入注释之后的示例代码链接:2-PythonDemo(content);注意:要换成自己的appidapi_secretapi_key

3.1步骤总结

  1. 这个示例将2星火模型python调用示例章节的代码作为类进行引用;仅额外在SparkPythondemo.py中增加了几个用于处理上下文的函数和代码;

  2. PythonDemo(content)\SparkApi.py文件与2星火模型python调用示例章节的代码的区别主要有以下几点:

    1. 增加了answersid全局变量;并在on_message方法中将模型返回的结果存放到了answer中;当然,on_message方法中对模型返回的结果依旧做了输出;
    2. gen_params方法生成请求参数时,payload.message.text参数不是直接指定了,而是由变量代替;这样可以从控制台输入问题,并经过处理后传入;
    3. 再就是,有一些变量的名称发生了变化;
  3. 再来看PythonDemo(content)\SparkPythondemo.py文件:

    1. 原先在PythonDemo(content)\SparkApi.py文件中的密钥、主机地址等信息都在这里;

    2. 上下文列表text作为全局变量;后续在调用getText方法时上下文列表将不断得到扩充;从而实现具有连续上下文调用大模型进行回答的功能

    3. 使用getlengthchecklen方法计算当前上下文列表中所有content的长度之和,判断有无超出长度上限;若超过上限,则将上下文列表中最早的消息删除掉;

    4. 通过执行下述语句,将控制台输入的信息封装成符合格式要求的带上下文的text列表,并使用之前的socket方法与模型交流,得到的答案存在SparkApi.answer中;

      while(1):Input = input("\n" +"我:") # 控制台读入问题question = checklen(getText("user",Input))SparkApi.answer ="" # 每次循环都将答案置为空,这样每次输出的答案就是当前问题的答案了print("星火:",end ="")SparkApi.main(appid,api_key,api_secret,Spark_url,domain,question)# print(SparkApi.answer)getText("assistant",SparkApi.answer)
      

      讯飞星火大模型带上下文的API调用与提问示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/39342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解MySQL【事务】的功能:确保数据完整性的关键技术

在数据库管理中,事务是确保数据完整性和一致性的核心机制。特别是对MySQL这样广泛应用的开源数据库系统,掌握事务的使用至关重要。在这篇文章中,我们将全面探讨MySQL事务的工作原理、ACID属性、隔离级别以及最佳实践,从而帮助开发…

宝塔Linux面板配置环境 + 创建站点

一、安装 (1)进入宝塔官网 https://www.bt.cn/new/index.html (2)点击“ 立即免费安装 ”,选择 Centos安装脚本 (3)进入 ssh 输入以下命令安装宝塔 yum install -y wget && wget -O …

实验三 SQL Server SSMS工具添加数据

1、打开ecommerce数据库,向表中分别录入以下数据信息 (1)商品类别表category catno catname describe 101 手机 各种品牌、型号手机 201 激光打印机 各种激光打印机 202 喷墨打印机 各种喷墨打印机 301 平板电脑 各种平板电脑…

Python后端面试题

1. 文件操作w和r的区别 在Python中,文件操作模式中的w和r都表示对文件的读写操作,但它们在打开文件时的行为有所不同: r模式: 读写:这种模式允许你同时读取和写入文件。文件必须已经存在,否则会抛出一个Fi…

思看科技募资额骤降:对赌压力下巨额分红,还购买 7项商业房产

《港湾商业观察》施子夫 6月11日,证监会网站披露思看科技(杭州)股份有限公司(以下简称,思看科技)的首轮审核问询函回复意见并更新2023年财务数据,继续推进上市进程。 公开信息显示&#xff0c…

低空经济背景下的无人机人才培养

无人机作为低空经济的重要组成部分,其技术的进步和应用的拓展直接推动了低空经济的快速发展。无人机以其高效、灵活、低成本的特点,在多个领域发挥了重要作用,成为推动低空经济发展的重要力量。 无人机人才培养的重要性 随着无人机应用的不…

深度之眼(二十九)——神经网络基础知识(四)-循环神经网络

文章目录 一、 学习目标二、序列数据三、语言模型四、循环神经网络4.1 RNN的反向传播 五、门控循环单元-GNU5.1 候选隐藏状态 六、长短期记忆网络-LSTM七、回顾 一、 学习目标 二、序列数据 序列数据是常见的数据类型,前后数据通常具有关联性 三、语言模型 综合…

【技术杂谈】如何访问Github | 解决无法连接Github的问题

访问网页的过程 什么是域名?什么是IP地址?- 域名是网站的名称。 - IP地址是服务器在互联网上的逻辑地址。域名往往是固定的,但是IP地址很有可能是会改变的。计算机通过Host文件检查本地缓存是否有域名对应IP地址 Host文件路径 C:\Windows\Sy…

C#反射基本应用

1、反射 反射是.NET Framework的一个特性,它允许在运行时获取类型的信息以及动态创建对象,调用方法,以及访问字段和属性。 2、代码 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy…

Node.js path模块

在 Node.js 中,path 模块用于处理和转换文件路径。以下是一些常用的 path 模块方法及其说明: path.basename(path[, ext]) 返回路径中的最后一部分,即文件名。示例:const path require(path); console.log(path.basename(/foo/ba…

ShardingSphere分库分表+读写分离

ShardingSphere 是一个开源的分布式数据库中间件,它支持分库分表和读写分离的功能,可以有效地提高数据库的并发处理能力和数据存储能力。以下是关于 ShardingSphere 分库分表和读写分离的一些关键点: 1. **读写分离**:在 Shardin…

Python中使用Oracle向量数据库实现文本检索系统

Python中使用Oracle向量数据库实现文本检索系统 代码分析 在本文中,我们将深入分析一个使用Oracle向量数据库实现文本检索系统的Python代码,并基于相同的技术生成一个新的示例。这个系统允许我们存储文档及其嵌入向量,并执行相似性搜索。 代码分析 让我们逐步分析原始代码的主…

探究Executors创建的线程池(如newFixedThreadPool)其核心线程数等参数的可调整性

java中提供Executors类来创建一些固定模板参数的线程池,如下图(newWorkStealingPool除外,这个是创建ForkJoinPool的,这里忽略): 拿newFixedThreadPool方法创建线程池为例,newFixedThreadPool是…

白杨SEO:打粉是啥?打粉引流怎么做?打粉引流犯法吗?小红书代发效果好吗?

文章大纲: 1、打粉是什么意思? 2、打粉有哪些方法? 3、打粉一般怎么变现? 4、打粉引流是违法犯罪吗? 5、小红书代发是啥? 6、小红书批量代发效果好吗? 打粉是什么意思? 打粉这…

第1章 firewalld防火墙

防火墙 概念 支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具支持IPv4、IPv6防火墙设置以及以太网桥支持服务或应用程序直接添加防火墙规则接口拥有两种配置模式 运行时配置:添加的策略立即生效,不用重载防火墙,策略临时…

C语言-初探指针

初探指针 指针概念指针和指针类型指针类型意义 野指针如何避免 指针运算指针-整数指针-指针指针的关系运算 指针和数组二级指针指针数组 指针概念 指针是内存中一个最小单元(1个字节)的编号,也就是地址平时口语中说的指针,通常指的是指针变量&#xff0…

(免费领源码)java#springboot#mysql校园医院预约挂号系统32236-计算机毕业设计项目选题推荐

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园医院管理等问题,对校园医院…

初识单片机

单片机 英文 Micro Controller Unit(MCU) 1.内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能 2.单片机的任务是信息采集(依靠传感器)、处理(依靠CPU)和硬件设备&#…

【嵌入式单片机】之RS-232、RS-485、RS-422比较

1. RS422是什么 RS422,正式名称为TIA/EIA-422,是一种串行通信标准,专为实现长距离、高可靠性的数据传输而设计。它采用差分信号传输技术,通过两对双绞线实现全双工通信,即发送和接收可以同时进行。RS422在工业自动化和远程监控系统中曾经扮演着重要角色,以其出色的抗干扰…

MySQL—常用的数据类型

数据类型 整型 1.创建一个含有无符号/有符号整型的字段的表 CREATE TABLE L1(id tinyint unsigned #无符号 ) CREATE TABLE L2(id tinyint #默认为有符号 ) 数值型(bit) 2.数值型(bit)的使用 小数 3.数值型(小数)的基本使用 字符串 4.字符串的基本使用 #演示字符串类型…