当前位置:   article > 正文

如何调用星火API,将语言大模型部署到本地_讯飞大模型本地部署

讯飞大模型本地部署

ChatGPT、文心一言、讯飞星火等生成式语言大模型功能极其强大,正在改变传统的搜索模式。将大模型部署到本地,是指通过调用API的形式直接使用大模型,而不需要通过浏览器去使用。本地化的好处有两点:一是直接使用大模型,方便快捷;二是将大模型内置到自己的应用开发中。当然,调用API也有些弊端,比如要消耗一定流量。讯飞星火提供了200万的免费token,相当于300万中文字符。接下来,介绍如何调用讯飞星火API。

一、注册账号,获取秘钥

  1. 点击讯飞官方网站,首先注册账号;
  2. 进入API设置界面,点击图1左下角API接入;
    图1

3. 点击下图免费试用,按提示进行相关操作,进入开发者平台
图2
我们还可以向下拖动滚动条,免费领取200万token(1tokens 约等于1.5个中文汉字 或者 0.8个英文单词),相当于300万中文。
在这里插入图片描述
不用付费,确认下单。
在这里插入图片描述
进入API应用平台,找到秘钥。
图3 开发者平台
在上图开发者平台右上角,我们可以看到APPID、APISecret和APIKey,这就是后面要用到的秘钥。

二、输入秘钥,快速调用API

1. 从API开发者平台首页进入,如下图所示
在这里插入图片描述
2. 点击开发文档,进入如下页面:
在这里插入图片描述
至此,我们可以看到星火官方已经在上图给出了快速调用API的方法,但是使用起来并不顺利,暂略。

三、下载星火demo文件,保存到本地

1. 在将上图网页滚动条拉倒最后,可以找到我们需要的py文件,点击即可下载。
在这里插入图片描述
上述两个py文件其实是独立的,第一个“Python调用示例”文件是单次对话;第二个则可以连续对话。这里我们先介绍第二个的使用方法。

2. 下载完成后,解压第二个压缩包,可以看到两个py文件:
第一个文件是:SparkApi,不需要做改动的
第二个文件是:demo文件,可以修改在这里插入图片描述
3. 复制或剪切这两个py文件到Anaconda的当前工作路径下。

在编辑器中,输入一下代码,可以打开当前路径:

import os
current_path = os.getcwd()  # 获取当前工作目录
os.startfile(current_path)  # 打开当前路径文件夹
  • 1
  • 2
  • 3

打开当前路径,将py文件移动到此。
接下来,在编辑器中调用第一个文件:

import AparkApi
  • 1

如果没有报错,那么说明已经成功将SparkApi.py文件放置到了当前路径。另外,可能出现提示缺少安装包,可以根据提示下载。

可能需要在promt中下载:

pip install --upgrade spark_ai_python
pip install websocket # 我的提示缺少websocket, 所以我下载了。
  • 1
  • 2

四、简单封装,为我使用

在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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

我做了以下修改:

  1. 官方使用的是Max 3.5, 可以使用功能更强大的ultra, Spark4.0 Ultra 请求地址,对应的domain参数为4.0Ultra: wss://spark-api.xf-yun.com/v4.0/chat
  2. 去掉text列表中的注释符号“#”,也可以保留。
  3. 增加两个调用函数,一个是单次对话:SparkOne;一个是连续对话Spark。
  4. 需要在开头(py文档中的XXXXXXXXXX)填入自己的密钥,前面我们已经获得
# 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77

修改好以后,将新的py文件命名为SparkUltra.py,并保存到当前路径,以后直接使用。

正常情况下,可以这样使用:

import SparkUltra as SK
SK.Spark() # 连续对话
SK.SparkOne() # 单次对话
  • 1
  • 2
  • 3

下面是我的一个试用:
在这里插入图片描述
在这里插入图片描述

至此全文完. Good luck.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/881303?site
推荐阅读
相关标签
  

闽ICP备14008679号