赞
踩
ChatGPT、文心一言、讯飞星火等生成式语言大模型功能极其强大,正在改变传统的搜索模式。将大模型部署到本地,是指通过调用API的形式直接使用大模型,而不需要通过浏览器去使用。本地化的好处有两点:一是直接使用大模型,方便快捷;二是将大模型内置到自己的应用开发中。当然,调用API也有些弊端,比如要消耗一定流量。讯飞星火提供了200万的免费token,相当于300万中文字符。接下来,介绍如何调用讯飞星火API。
3. 点击下图免费试用,按提示进行相关操作,进入开发者平台
我们还可以向下拖动滚动条,免费领取200万token(1tokens 约等于1.5个中文汉字 或者 0.8个英文单词),相当于300万中文。
不用付费,确认下单。
进入API应用平台,找到秘钥。
在上图开发者平台右上角,我们可以看到APPID、APISecret和APIKey,这就是后面要用到的秘钥。
1. 从API开发者平台首页进入,如下图所示
2. 点击开发文档,进入如下页面:
至此,我们可以看到星火官方已经在上图给出了快速调用API的方法,但是使用起来并不顺利,暂略。
1. 在将上图网页滚动条拉倒最后,可以找到我们需要的py文件,点击即可下载。
上述两个py文件其实是独立的,第一个“Python调用示例”文件是单次对话;第二个则可以连续对话。这里我们先介绍第二个的使用方法。
2. 下载完成后,解压第二个压缩包,可以看到两个py文件:
第一个文件是:SparkApi,不需要做改动的
第二个文件是:demo文件,可以修改
3. 复制或剪切这两个py文件到Anaconda的当前工作路径下。
在编辑器中,输入一下代码,可以打开当前路径:
import os
current_path = os.getcwd() # 获取当前工作目录
os.startfile(current_path) # 打开当前路径文件夹
打开当前路径,将py文件移动到此。
接下来,在编辑器中调用第一个文件:
import AparkApi
如果没有报错,那么说明已经成功将SparkApi.py文件放置到了当前路径。另外,可能出现提示缺少安装包,可以根据提示下载。
可能需要在promt中下载:
pip install --upgrade spark_ai_python
pip install websocket # 我的提示缺少websocket, 所以我下载了。
在Spyder等编辑器中打开第二个py文件:SparkPythondemo.py。复制如下:
# coding: utf-8 import SparkApi import time #以下密钥信息从控制台获取 https://console.xfyun.cn/services/bm35 appid = "XXXXXXXX" #填写控制台中获取的 APPID 信息 api_secret = "XXXXXXXXXXXXXXXXXXXXXXXX" #填写控制台中获取的 APISecret 信息 api_key ="XXXXXXXXXXXXXXXXXXXXXXXX" #填写控制台中获取的 APIKey 信息 domain = "generalv3.5" # Max版本 #domain = "generalv3" # Pro版本 #domain = "general" # Lite版本 Spark_url = "wss://spark-api.xf-yun.com/v3.5/chat" # Max服务地址 #Spark_url = "wss://spark-api.xf-yun.com/v3.1/chat" # Pro服务地址 #Spark_url = "wss://spark-api.xf-yun.com/v1.1/chat" # Lite服务地址 #初始上下文内容,当前可传system、user、assistant 等角色 text =[ # {"role": "system", "content": "你现在扮演李白,你豪情万丈,狂放不羁;接下来请用李白的口吻和用户对话。"} , # 设置对话背景或者模型角色 # {"role": "user", "content": "你是谁"}, # 用户的历史问题 # {"role": "assistant", "content": "....."} , # AI的历史回答结果 # # ....... 省略的历史对话 # {"role": "user", "content": "你会做什么"} # 最新的一条问题,如无需上下文,可只传最新一条问题 ] 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__': 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)
我做了以下修改:
# coding: utf-8 import SparkApi import time #以下密钥信息从控制台获取 https://console.xfyun.cn/services/bm35 appid = "XXXXXXXX" #填写控制台中获取的 APPID 信息 api_secret = "XXXXXXXXXXXXXXXXXXXXXXXX" #填写控制台中获取的 APISecret 信息 api_key ="XXXXXXXXXXXXXXXXXXXXXXXX" #填写控制台中获取的 APIKey 信息 domain = "4.0Ultra" #domain = "generalv3.5" # Max版本 #domain = "generalv3" # Pro版本 #domain = "general" # Lite版本 Spark_url = "wss://spark-api.xf-yun.com/v4.0/chat" # ultra服务地址 #Spark_url = "wss://spark-api.xf-yun.com/v3.5/chat" # Max服务地址 #Spark_url = "wss://spark-api.xf-yun.com/v3.1/chat" # Pro服务地址 #Spark_url = "wss://spark-api.xf-yun.com/v1.1/chat" # Lite服务地址 #初始上下文内容,当前可传system、user、assistant 等角色 text =[ {"role": "system", "content": "你现在扮演李白,你豪情万丈,狂放不羁;接下来请用李白的口吻和用户对话。"} , # 设置对话背景或者模型角色 {"role": "user", "content": "你是谁"}, # 用户的历史问题 {"role": "assistant", "content": "....."} , # AI的历史回答结果 # ....... 省略的历史对话 {"role": "user", "content": "你会做什么"} # 最新的一条问题,如无需上下文,可只传最新一条问题 ] 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 def Spark(): 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) def SparkOne(): 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) if __name__ == '__main__': 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)
修改好以后,将新的py文件命名为SparkUltra.py,并保存到当前路径,以后直接使用。
正常情况下,可以这样使用:
import SparkUltra as SK
SK.Spark() # 连续对话
SK.SparkOne() # 单次对话
下面是我的一个试用:
至此全文完. Good luck.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。