返回顶部
首页 > 资讯 > 后端开发 > Python >手把手教你打造自己的AI聊天机器人程序(讯飞星火API)
  • 339
分享到

手把手教你打造自己的AI聊天机器人程序(讯飞星火API)

chatgptpython科大讯飞讯飞星火 2023-10-19 06:10:04 339人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

案例背景 最近发现科大的讯飞星火大模型可以申请api试用了,我一直想用chatgpt的API,一是因为收费买不起,二是因为网络不方便..... 现在有了科大讯飞这个国内免费的,当然要试试。 目前讯飞星火可以申请试用他们的模型API,但是只有

案例背景

最近发现科大的讯飞星火大模型可以申请api试用了,我一直想用chatgpt的API,一是因为收费买不起,二是因为网络不方便.....

现在有了科大讯飞这个国内免费的,当然要试试。

目前讯飞星火可以申请试用他们的模型API,但是只有200w的token上限(一下就能花光),而且目前是测试阶段,只能自己做点小玩意试用一下。

本篇就是教大家怎么申请,然后怎么写代码封装为.exe程序,然后随时都可以使用ai进行对话。


申请准备

讯飞星火官网:讯飞星火认知大模型-AI大语言模型-星火大模型-科大讯飞

然后点击api测试

 然后点击申请:

进入申请界面,但别急着填信息,我们要先申请一个APPID号,翻到最下面:

全部都填好:

之后就能得到一个APPID:

记住它,然后回到我们刚刚申请的界面,填好所有的信息提交:

我们需要等一会,大概一个小时内就能通过申请。


通过后,我们可以在工单中心查看自己的信息:

然后我们进入平台首页,查看自己的控制台

点击我们申请的应用:

点击左边的星火大模型V1.5/V2.0

就能查看到我们这个申请的APPID还有API的密码等等信息:

有了这个信息后,就可以写代码了。


编写代码

源文档链接:星火认知大模型Web文档 | 讯飞开放平台文档中心 (xfyun.cn)

想详细了解可以看看,只想学会怎么调用API就看我下面代码就行。

首先要装一个库,websocket  和 WEBSocket_client

先在命令行里面输入:(按win+R,然后输入cmd打开命令行)

pip install websocket

可能会比较慢,报错的话多重复试试 

然后再安装:

pip install websocket_client

就完成了环境的准备。(其他的包应该都是py内置的)

新建一个py文件,名字就命名为讯飞星火,然后输入:

import _thread as threadimport base64import datetimeimport hashlibimport hMacimport JSONfrom urllib.parse import urlparseimport sslfrom datetime import datetimefrom time import mktimefrom urllib.parse import urlencodefrom wsgiref.handlers import fORMat_date_timeimport websocket  # 使用websocket_clientanswer = ""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"        # 进行hmac-sha256进行加密        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')        # 将请求的鉴权参数组合为字典        v = {            "authorization": authorization,            "date": date,            "host": self.host        }        # 拼接鉴权参数,生成url        url = self.Spark_url + '?' + urlencode(v)        # 此处打印出建立连接时候的url,参考本demo的时候可取消上方打印的注释,比对相同参数时生成的url与自己代码生成的url是否一致        return url# 收到websocket错误的处理def on_error(ws, error):    print("### error:", error)# 收到websocket关闭的处理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和用户的提问来生成请参数    """    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 datadef 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 信息#用于配置大模型版本,默认“general/generalv2”#domain = "general"   # v1.5版本domain = "generalv2"    # v2.0版本#云端环境的服务地址#Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat"  # v1.5环境的地址Spark_url = "ws://spark-api.xf-yun.com/v2.1/chat"  # v2.0环境的地址text =[]# length = 0def getText(role,content):    jsoncon = {}    jsoncon["role"] = role    jsoncon["content"] = content    text.append(jsoncon)    return textdef getlength(text):    length = 0    for content in text:        temp = content["content"]        leng = len(temp)        length += leng    return lengthdef 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))

其他完全不用改,直接就能运行了:

 现在就以及能运行了,但是每次都要启动python还是很麻烦,那就把它打包为可执行的程序,这样以后就可以做到随处可用!

(如果有很多文本数据需要进行一一处理,那么使用Python循环,然后API回答是最好不过了,比人工聊天一段一段的复制粘贴快很多)


打包程序

主要依靠pyinstaller库实现,安装:

pip install pyinstaller

然后win+r,输入cmd打开终端

输入自己的代码文件所在的路径:

cd /d "E:\Xiao work\其他\自学pandas\脚本系列"

然后输入打包的文件名称,我的文件名叫讯飞星火.py

pyinstaller --onefile 讯飞星火.py

等待就行,后面就可以在这个目录下的dist文件夹里面找到这个程序了。
 

它才5MB,这么小我是没想到的....

双击打开就能用,输入你想说的话:

虽然很简陋.....,但很方便,双击打开就能用,只有要电脑有网就能用,文件也不大。

要是有大佬能加个漂亮的图形互动界面就能成为真正的应用程序了。

来源地址:https://blog.csdn.net/weixin_46277779/article/details/132604976

--结束END--

本文标题: 手把手教你打造自己的AI聊天机器人程序(讯飞星火API)

本文链接: https://lsjlt.com/news/432081.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作