案例背景
最近發(fā)現(xiàn)科大的訊飛星火大模型可以申請API試用了,我一直想用chatgpt的API,一是因為收費(fèi)買不起,二是因為網(wǎng)絡(luò)不方便.....
現(xiàn)在有了科大訊飛這個國內(nèi)免費(fèi)的,當(dāng)然要試試。
目前訊飛星火可以申請試用他們的模型API,但是只有200w的token上限(一下就能花光),而且目前是測試階段,只能自己做點小玩意試用一下。
本篇就是教大家怎么申請,然后怎么寫代碼封裝為.exe程序,然后隨時都可以使用AI進(jìn)行對話。
申請準(zhǔn)備
訊飛星火官網(wǎng):訊飛星火認(rèn)知大模型-AI大語言模型-星火大模型-科大訊飛
然后點擊api測試
?然后點擊申請:
進(jìn)入申請界面,但別急著填信息,我們要先申請一個APPID號,翻到最下面:
全部都填好:
之后就能得到一個APPID:
記住它,然后回到我們剛剛申請的界面,填好所有的信息提交:
我們需要等一會,大概一個小時內(nèi)就能通過申請。
通過后,我們可以在工單中心查看自己的信息:
然后我們進(jìn)入平臺首頁,查看自己的控制臺
點擊我們申請的應(yīng)用:
點擊左邊的星火大模型V1.5/V2.0
就能查看到我們這個申請的APPID還有API的密碼等等信息:
有了這個信息后,就可以寫代碼了。
編寫代碼
源文檔鏈接:星火認(rèn)知大模型Web文檔 | 訊飛開放平臺文檔中心 (xfyun.cn)
想詳細(xì)了解可以看看,只想學(xué)會怎么調(diào)用API就看我下面代碼就行。
首先要裝一個庫,websocket ?和 websocket_client
先在命令行里面輸入:(按win+R,然后輸入cmd打開命令行)
pip install websocket
可能會比較慢,報錯的話多重復(fù)試試?
然后再安裝:
pip install websocket_client
就完成了環(huán)境的準(zhǔn)備。(其他的包應(yīng)該都是py內(nèi)置的)
新建一個py文件,名字就命名為訊飛星火,然后輸入:
import _thread as thread
import base64
import datetime
import hashlib
import hmac
import json
from urllib.parse import urlparse
import ssl
from datetime import datetime
from time import mktime
from urllib.parse import urlencode
from wsgiref.handlers import format_date_time
import websocket # 使用websocket_client
answer = ""
class Ws_Param(object):
# 初始化
def __init__(self, APPID, APIKey, APISecret, Spark_url):
self.APPID = APPID
self.APIKey = APIKey
self.APISecret = APISecret
self.host = urlparse(Spark_url).netloc
self.path = urlparse(Spark_url).path
self.Spark_url = Spark_url
# 生成url
def create_url(self):
# 生成RFC1123格式的時間戳
now = datetime.now()
date = format_date_time(mktime(now.timetuple()))
# 拼接字符串
signature_origin = "host: " + self.host + "\n"
signature_origin += "date: " + date + "\n"
signature_origin += "GET " + self.path + " HTTP/1.1"
# 進(jìn)行hmac-sha256進(jìn)行加密
signature_sha = hmac.new(self.APISecret.encode('utf-8'), signature_origin.encode('utf-8'),
digestmod=hashlib.sha256).digest()
signature_sha_base64 = base64.b64encode(signature_sha).decode(encoding='utf-8')
authorization_origin = f'api_key="{self.APIKey}", algorithm="hmac-sha256", headers="host date request-line", signature="{signature_sha_base64}"'
authorization = base64.b64encode(authorization_origin.encode('utf-8')).decode(encoding='utf-8')
# 將請求的鑒權(quán)參數(shù)組合為字典
v = {
"authorization": authorization,
"date": date,
"host": self.host
}
# 拼接鑒權(quán)參數(shù),生成url
url = self.Spark_url + '?' + urlencode(v)
# 此處打印出建立連接時候的url,參考本demo的時候可取消上方打印的注釋,比對相同參數(shù)時生成的url與自己代碼生成的url是否一致
return url
# 收到websocket錯誤的處理
def on_error(ws, error):
print("### error:", error)
# 收到websocket關(guān)閉的處理
def on_close(ws,one,two):
print(" ")
# 收到websocket連接建立的處理
def on_open(ws):
thread.start_new_thread(run, (ws,))
def run(ws, *args):
data = json.dumps(gen_params(appid=ws.appid, domain= ws.domain,question=ws.question))
ws.send(data)
# 收到websocket消息的處理
def on_message(ws, message):
# print(message)
data = json.loads(message)
code = data['header']['code']
if code != 0:
print(f'請求錯誤: {code}, {data}')
ws.close()
else:
choices = data["payload"]["choices"]
status = choices["status"]
content = choices["text"][0]["content"]
print(content,end ="")
global answer
answer += content
# print(1)
if status == 2:
ws.close()
def gen_params(appid, domain,question):
"""
通過appid和用戶的提問來生成請參數(shù)
"""
data = {
"header": {
"app_id": appid,
"uid": "1234"
},
"parameter": {
"chat": {
"domain": domain,
"random_threshold": 0.5,
"max_tokens": 2048,
"auditing": "default"
}
},
"payload": {
"message": {
"text": question
}
}
}
return data
def main(appid, api_key, api_secret, Spark_url,domain, question):
# print("星火:")
wsParam = Ws_Param(appid, api_key, api_secret, Spark_url)
#websocket.enableTrace(False)
wsUrl = wsParam.create_url()
ws = websocket.WebSocketApp(wsUrl, on_message=on_message, on_error=on_error, on_close=on_close, on_open=on_open)
ws.appid = appid
ws.question = question
ws.domain = domain
ws.run_forever(sslopt={"cert_reqs": ssl.CERT_NONE})
然后下面的三行信息就需要用剛剛自己的API密鑰填寫:
?
#以下密鑰信息從控制臺獲取
appid = "******" #填寫控制臺中獲取的 APPID 信息
api_secret = "****************" #填寫控制臺中獲取的 APISecret 信息
api_key ="***********************8" #填寫控制臺中獲取的 APIKey 信息
#用于配置大模型版本,默認(rèn)“general/generalv2”
#domain = "general" # v1.5版本
domain = "generalv2" # v2.0版本
#云端環(huán)境的服務(wù)地址
#Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat" # v1.5環(huán)境的地址
Spark_url = "ws://spark-api.xf-yun.com/v2.1/chat" # v2.0環(huán)境的地址
text =[]
# length = 0
def getText(role,content):
jsoncon = {}
jsoncon["role"] = role
jsoncon["content"] = content
text.append(jsoncon)
return text
def getlength(text):
length = 0
for content in text:
temp = content["content"]
leng = len(temp)
length += leng
return length
def checklen(text):
while (getlength(text) > 8000):
del text[0]
return text
if __name__ == '__main__':
text.clear
while(1):
Input = input("\n我:")
question = checklen(getText("user",Input))
answer =""
print("星火:",end = "")
main(appid,api_key,api_secret,Spark_url,domain,question)
getText("assistant",answer)
# print(str(text))
其他完全不用改,直接就能運(yùn)行了:
?現(xiàn)在就以及能運(yùn)行了,但是每次都要啟動python還是很麻煩,那就把它打包為可執(zhí)行的程序,這樣以后就可以做到隨處可用!
(如果有很多文本數(shù)據(jù)需要進(jìn)行一一處理,那么使用python循環(huán),然后API回答是最好不過了,比人工聊天一段一段的復(fù)制粘貼快很多)
打包程序
主要依靠pyinstaller庫實現(xiàn),安裝:
pip install pyinstaller
然后win+r,輸入cmd打開終端
輸入自己的代碼文件所在的路徑:
cd /d "E:\Xiao work\其他\自學(xué)pandas\腳本系列"
然后輸入打包的文件名稱,我的文件名叫訊飛星火.py
pyinstaller --onefile 訊飛星火.py
等待就行,后面就可以在這個目錄下的dist文件夾里面找到這個程序了。
?
它才5MB,這么小我是沒想到的....
雙擊打開就能用,輸入你想說的話:
雖然很簡陋.....,但很方便,雙擊打開就能用,只有要電腦有網(wǎng)就能用,文件也不大。文章來源:http://www.zghlxwxcb.cn/news/detail-717277.html
要是有大佬能加個漂亮的圖形互動界面就能成為真正的應(yīng)用程序了。文章來源地址http://www.zghlxwxcb.cn/news/detail-717277.html
到了這里,關(guān)于手把手教你打造自己的AI聊天機(jī)器人程序(訊飛星火API)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!