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.pswp.cn/web/39342.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39342.shtml
英文地址,請注明出處:http://en.pswp.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.字符串的基本使用 #演示字符串類型…