Python调用讯飞星火大模型v3 api接口使用教程

这篇具有很好参考价值的文章主要介绍了Python调用讯飞星火大模型v3 api接口使用教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python调用讯飞星火大模型v3 api接口使用教程,python,人工智能,自然语言处理,语言模型

1、获取api接口的ID和key

        这里我们可以获取星火免费赠送的200万个token使用和测试,获取方法如下:

        打卡网站讯飞星火认知大模型-AI大语言模型-星火大模型-科大讯飞 ,登录用户点击免费使用

        

Python调用讯飞星火大模型v3 api接口使用教程,python,人工智能,自然语言处理,语言模型

 1.1 创建应用

       点击购买首次应该会让创建一个应用, 如下图,按要求内容随意填写,然后提交

Python调用讯飞星火大模型v3 api接口使用教程,python,人工智能,自然语言处理,语言模型

1.2  购买token

        创建完成应用,回去购买,我这里选择个人的(这些都是在完成认证及设置了支付密码的基础)

Python调用讯飞星火大模型v3 api接口使用教程,python,人工智能,自然语言处理,语言模型

1.3 获取 ID和key

        在工单中心这个大模型3.0,页面就是,appid这三个我们会用到

Python调用讯飞星火大模型v3 api接口使用教程,python,人工智能,自然语言处理,语言模型

Python调用讯飞星火大模型v3 api接口使用教程,python,人工智能,自然语言处理,语言模型

2、 Python调用api

        我的Python版本是在3.8左右的

        创建一个名为SparkApi.py的Python文件,将下面代码粘进去

        下面官方的代码有个坑,就是answer = ""是个全局变量,这个会将所有的提问拼接在一起,不过这个影响不大,就是打印answer的结果不好看,只要我们输入时text列表清除历史输入,token还是不带历史

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"

        # 进行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,
                "temperature": 0.5,
                "max_tokens": 2048
            }
        },
        "payload": {
            "message": {
                "text": question
            }
        }
    }
    return data


def main(appid, api_key, api_secret, Spark_url,domain, question):
    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})

 在随便建一个py文件,将下面代码粘进去,这个是调用客户端,上面文件是服务端

import SparkApi
#以下密钥信息从控制台获取
appid = "XXXXXXXX"     #填写控制台中获取的 APPID 信息
api_secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"   #填写控制台中获取的 APISecret 信息
api_key ="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"    #填写控制台中获取的 APIKey 信息

domain = "generalv3"   # v3版本
#云端环境的服务地址
Spark_url = "ws://spark-api.xf-yun.com/v3.1/chat"  # v3环境的地址("wss://spark-api.xf-yun.com/v3.1/chat)


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))
        SparkApi.answer =""
        print("星火:",end = "")
        SparkApi.main(appid,api_key,api_secret,Spark_url,domain,question)
        getText("assistant",SparkApi.answer)
        # print(str(text))

        这里就需要把刚才控制台的信息替换掉那些xxxx

        ps:这里就是一个python的简易问答,如果想掉用接口,在这个调用文件里加一个调用函数

def spark_api(question):
    """
    :param question:
    :return:
    """

    question = checklen(getText("user",question))
    SparkApi.answer =""
    SparkApi.main(appid,api_key,api_secret,Spark_url,domain,question)
    text.clear()
    return SparkApi.answer

        建议在使用接口函数调用是加上text.clear(),清除历史对话,否则在一个长的连接调用时历史的token会加越来越长,十分消耗token,不需要历史的建议clear

3 、应用分享

        最近作者在做项目是使用到了api辅助数据处理,其中发现在在提示词中加入一个历史对话可能会让结果更标准。下面是测试样例:

        

def getText(role,content):

    jsoncon = {}
    history_put = """['工程','货物',]\n请从上面选项中选择一个属于下面文本的分类\n左侧边坡宣传标语   
        ,结果只输出1,2 ,如果都不属于输出0
    """
    text.append({'role':'user','content':history_put })
    text.append({'role': 'assistant', 'content': '0'})
    jsoncon["role"] = role
    jsoncon["content"] = content
    text.append(jsoncon)
    return text

         上面代码是作者在函数中加入一串历史对话,这种思路就是每次调用都是一次历史和本次调用,这样在输出的结果上大部分都是一致的。在我测试7000条数据中仅有10条是有解释性话术。

4、bug问题

bug:如下图:

这个是缺少包安装这个即可:websocket-client==1.4.2

Python调用讯飞星火大模型v3 api接口使用教程,python,人工智能,自然语言处理,语言模型

如下图:

这个我认为是spark_url="ws(s)://spark-api.xf-yun.com/v3.1/chat"  # 错误案例

正确的spark_url="wss://spark-api.xf-yun.com/v3.1/chat" 或者ws://spark-api.xf-yun.com/v3.1/chat

Python调用讯飞星火大模型v3 api接口使用教程,python,人工智能,自然语言处理,语言模型

项目地址:

https://github.com/liukangjia666/spark_demo文章来源地址https://www.toymoban.com/news/detail-753677.html

到了这里,关于Python调用讯飞星火大模型v3 api接口使用教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【讯飞星火大模型AI】SpringBoot项目快速接入讯飞星火API

    讯飞官网:讯飞星火认知大模型-AI大语言模型-星火大模型-科大讯飞 (xfyun.cn) 新用户认证之后可以免费领取二百万token,有效期一年,免费薅羊毛。 认证完成后,创建一个应用(很简单),点点点就能完成。 2.1 配置 创建完成之后,去github上找到讯飞开放平台的sdk,推荐下面这个

    2024年04月15日
    浏览(37)
  • php对接讯飞星火认知大模型SparkDesk的Web API示例代码

    最近我在给客户开发科大讯飞的星火认知大模型SparkDesk,踩过一些坑,网上几乎搜不到PHP的demo代码,这里模板兔给出以下成果代码供大家参考。 首先,sparkdesk的接口需要使用到websocket,所以我们需要先安装websocket,使用composer在网站根目录安装: 然后就是写php代码: 我把接

    2024年02月10日
    浏览(31)
  • Unity+讯飞星火大模型+Web api,实现二次元小姐姐AI聊天互动

            最近讯飞的星火大模型更新了2.0版本,增强了AI的语言生成能力。毕竟是国产大语言模型,我也尝试使用了一下星火大模型的应用广场,体验还是很不错的。应用广场提供了很多AI助手工具,也支持用户创建自己的AI助手,能力不局限于自然语言生成,也有一些图片生

    2024年02月08日
    浏览(45)
  • 星火认知大模型API接入Python教程,中文回答效果非常友好

    地址大概是这个: 自己创建一个应用: 进入控制台: 注意:我已经申请好了,如果你需要使用,需要提交一个申请,一般第二天通过。 我们可以看到右侧有三个参数:APPID、APISecret、APIKey,填入下方代码的main中即可: 运行如下: 似乎看起来跟GPT4.0回答差不多?总体效果还

    2024年02月13日
    浏览(30)
  • 讯飞星火知识库文档问答Web API的使用(二)

    上一篇提到过星火spark大模型,现在有更新到3.0: 给ChuanhuChatGPT 配上讯飞星火spark大模型V2.0(一) 同时又看到有知识库问答的web api,于是就测试了一下。 下一篇是在ChuanhuChatGPT 中单独写一个基于星火知识库的内容。 SparkDesk的文档问答模块相关文档与地址: 官方演示地址:

    2024年02月03日
    浏览(34)
  • 【人工智能】科大讯飞API接口调用(第一集)

    这学期有一门人工智能教育课程,恰巧又有这么一个实践,要求进行人工智能接口调用 于是首选了科大讯飞,下面是详细过程记录 以下是流程以及实现细节描述 第一步 来到科大讯飞开放平台 http://www.xfyun.cn 第二步 注册一个账号 注册时响应可能没那么快,稍等即可 第三步

    2024年02月09日
    浏览(39)
  • Unity 讯飞 之 讯飞星火大模型的简单封装和使用(补充讯飞大模型识图功能)

    目录 Unity 讯飞 之 讯飞星火大模型的简单封装和使用(补充讯飞大模型识图功能) 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、案例简单实现步骤 六、关键代码 七、案例下载地址 补充、讯飞大模型-图像识别 Unity 工具类,自己整理的一些游戏开发可能用到的

    2024年02月04日
    浏览(48)
  • chatGPT VS 科大讯飞星火大模型 使用初体验,到底谁更胜一筹?

    下午这会有时间,正好之前申请了讯飞星火大模型的体验,这里就想着简单使用体验对比一下chatGPT和星火大模型的差异,废话不多说这里直接上图: 【诺特兰德叶黄素与纯天然蔬菜中的叶黄素有什么区别】  【今年六月份我就要参加高考了,对于高考我没有很多的实战经验

    2024年02月08日
    浏览(41)
  • 【讯飞星火认知大模型】大模型之星火手机助理

    目录 1. 讯飞星火认知大模型介绍 2. API 申请 3. 星火手机助理 4. 效果展示 讯飞星火认知大模型是科大讯飞自研的基于深度学习的自然语言处理模型,它可以理解和生成中文,执行多种任务,如问答、翻译、写作、编程等。它的目标是实现“智能涌现”,覆盖多维度多任务多

    2024年02月13日
    浏览(34)
  • Python ❀ 使用代码实现API接口调用详解

    本文主要讲解常用API接口如何使用python实现。 API :Application Programming Interface,是 应用程序开发接口 的缩写,意思是一些预设好的函数或方法,这些预设好的函数或方法允许第三方程序通过网络来调用数据或提供基于数据的服务。 Python运行环境:python3.10.2 + PyCharm 使用 pip

    2024年01月18日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包