Langchain+讯飞星火大模型Spark Max调用

1、安装langchain

#安装langchain环境
pip install langchain==0.3.3 openai -i https://mirrors.aliyun.com/pypi/simple 
#灵积模型服务
pip install dashscope -i https://mirrors.aliyun.com/pypi/simple   
#安装第三方集成,就是各种大语言模型
pip install langchain-community==0.3.2 -i https://mirrors.aliyun.com/pypi/simple 
#加载环境的工具  
pip install python-dotenv 

2、前期准备工作

第一个准备工作:Websocket服务接口认证信息

传送门:讯飞开放平台-以语音交互为核心的人工智能开放平台

2.1.登录或者注册

2.2 创建建新应用

2.3 领取tokens 

选择自己想要的模型,免费领tokens 

2.4 申请免费token 

2.5查看Tokens

返回“控制台”,打开自己的应用,并选择刚购买的模型,就可以看到tokens已下发

3、调用模型api

调用模型api,使用tokens 

3.1 查看API密钥

在“我的应用”中查看申请的应用,找到"APPID","APISecret","APIKey"

3.2 调用实例

查看调用实例:星火认知大模型Web API文档 | 讯飞开放平台文档中心

 4、编码实现

4.1 使用langchain

import os
from dotenv import find_dotenv, load_dotenv
from langchain_community.llms import SparkLLM
load_dotenv(find_dotenv())

os.environ["IFLYTEK_SPARK_APP_ID"] = "ba04ca"
os.environ["IFLYTEK_SPARK_API_KEY"] = "YzhGNjMDBmMjVhMmQmFjNWIxM4"
os.environ["IFLYTEK_SPARK_API_SECRET"] = "6647142991bebde80fa4d4127a"


llm_spark = SparkLLM()
res = llm_spark.invoke("中国国庆日是哪一天?")
print(res)

4.2、使用sparkAi

pip install --upgrade spark_ai_python
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage
 
#星火认知大模型Spark Max的URL值,其他版本大模型URL值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'
#星火认知大模型调用秘钥信息,请前往讯飞开放平台控制台(https://console.xfyun.cn/services/bm35)查看
SPARKAI_APP_ID = 'ba04ca'
SPARKAI_API_SECRET = '6647142991bebde80fa4d4127a'
SPARKAI_API_KEY = 'YzhGNjMDBmMjVhMmQmFjNWIxM4'
#星火认知大模型Spark Max的domain值,其他版本大模型domain值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_DOMAIN = 'generalv3.5'
 
if __name__ == '__main__':
    spark = ChatSparkLLM(
        spark_api_url=SPARKAI_URL,
        spark_app_id=SPARKAI_APP_ID,
        spark_api_key=SPARKAI_API_KEY,
        spark_api_secret=SPARKAI_API_SECRET,
        spark_llm_domain=SPARKAI_DOMAIN,
        streaming=False,
    )
    messages = [ChatMessage(
        role="user",
        content='你好呀'
    )]
    handler = ChunkPrintHandler()
    a = spark.generate([messages], callbacks=[handler])
    print(a)

5、常见错误

5.1、报错信息:

APPID错误:

Error Code: 10005, Error: InvalidParamError:(...) app_id is not same to kong app_id

APISecret错误:

Handshake status 401 Unauthorized ... b'{"message":"HMAC signature does not match"}'

APIKey错误:

Handshake status 401 Unauthorized ... b'{"message":"HMAC signature cannot be verified: fail to retrieve credential"}'

解决方案:检测是否填写正确,是否填反信息,例如APISecret和APIKey填反了。

5.2、报错信息:

Error Code: 11200, Error: AppIdNoAuthError:(...) tokens.total

原因1:token不足

排查:检查token(Spark Max)控制台-讯飞开放平台

原因2:调用的模型版本错误(微调中出现)

排查与解决:检查你的domain和Spark_url值,是不是和模型版本对应,修改即可 

#调用微调大模型时,设置为“patch”
# domain = "patch"  # 微调v1.1环境的地址(lite)
domain = "patchv3"  # 微调v3.1环境的地址(pro)
 
#云端环境的服务地址
# Spark_url = "wss://spark-api-n.xf-yun.com/v1.1/chat"  # 微调v1.1环境的地址
Spark_url = "wss://spark-api-n.xf-yun.com/v3.1/chat"  # 微调v3.1环境的地址

6、补充

WebSocket协议通用鉴权URL生成说明

WebSocket协议通用鉴权URL生成说明 | 讯飞开放平台文档中心

import hashlib
import base64
from urllib.parse import urlencode
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage


def get_authentication():
    APIKey = 'MWQ2Og2IxNTJjOWI5MDMyNjMx'
    APISecret = '776261842a1e6413b53f31bf0'
    date = format_date_time(mktime(datetime.now().timetuple()))
    tmp_info = f"wss://spark-api.xf-yun.com/\ndate :{date}\nGET /v3.5/chat HTTP/1.1"
    tmp_sha = hmac.new(APISecret.encode('utf-8'), tmp_info.encode('utf-8'), digestmod=hashlib.sha256).digest()
    signature = base64.b64encode(tmp_sha).decode(encoding='utf-8')
    authorization_origin = f"api_key='{APIKey}', algorithm='hmac-sha256', headers='host date request-line', signature='{signature}'"
    v = {
        "authorization": authorization_origin,  # 上方鉴权生成的authorization
        "date": date,  # 步骤1生成的date
        "host": "spark-api.xf-yun.com"  # 请求的主机名,根据具体接口替换
    }
    url = "wss://spark-api.xf-yun.com/v3.5/chat?" + urlencode(v)
    return url

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/960213.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gradle配置指南:深入解析settings.gradle.kts(Kotlin DSL版)

文章目录 Gradle配置指南:深入解析settings.gradle.kts(Kotlin DSL版)settings.gradle.kts 基础配置选项单项目配置多项目配置 高级配置选项插件管理(Plugin Management)基础配置模板案例:Android项目标准配…

php twig模板引擎详细使用教程

php twig模板引擎 1. 什么是Twig模板引擎 Twig是一个强大且灵活的PHP模板引擎,它提供了一种更简洁和可扩展的方法来创建PHP应用程序的视图层。Twig模板引擎旨在将设计与业务逻辑分离,并为开发人员提供一种更加清晰和易于维护的方式来构建网页。Twig由S…

Java后端之AOP

AOP&#xff1a;面向切面编程&#xff0c;本质是面向特定方法编程 引入依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>示例&#xff1a;记录…

vim的多文件操作

[rootxxx ~]# vim aa.txt bb.txt cc.txt #多文件操作 next #下一个文件 prev #上一个文件 first #第一个文件 last #最后一个文件 快捷键: ctrlshift^ #当前和上个之间切换 说明&#xff1a;快捷键ctrlshift^&#xff0c…

DataSecOps的要点

2020年首次提出&#xff0c;DataSecOps是一种敏捷、全面、内置安全的 方法&#xff0c;用于协调不断变化的数据及其用户&#xff0c;旨在快速提供数据价值&#xff0c; 同时确保数据的私密性、安全性和良好的管理。 强调数据全生命周 期流转运营过程中的内嵌安全属性&#x…

实用工具推荐----wsl安装

一&#xff1a;Win设置修改 Win 搜索 ”启用或关闭windows 功能“ 将如下内容选中 点击升级 重启电脑 二&#xff1a;安装步骤 参考官方文档 适用于 Linux 的 Windows 子系统文档 | Microsoft Learn 下载wsl ubantu发行包 旧版 WSL 的手动安装步骤 | Microsoft Learn 将u…

如何建设一个企业级的数据湖

建设一个企业级的数据湖是一项复杂且系统化的工程&#xff0c;需要从需求分析、技术选型、架构设计到实施运维等多个方面进行综合规划和实施。以下是基于我搜索到的资料&#xff0c;详细阐述如何建设企业级数据湖的步骤和关键要点&#xff1a; 一、需求分析与规划 明确业务需…

如何在 macOS 上安装 PIP ?

PIP 是任何 Python 开发人员必备的工具&#xff0c;因为它简化了安装和管理 Python 包的过程。本教程是为 macOS 用户量身定制的&#xff0c;并假设对使用终端有基本的了解。 必备条件 在安装 PIP 之前&#xff0c;必须确保您的系统上已经安装了 Python。Python 3.4 及更高版…

Kotlin开发(六):Kotlin 数据类,密封类与枚举类

引言 想象一下&#xff0c;你是个 Kotlin 开发者&#xff0c;敲着代码忽然发现业务代码中需要一堆冗长的 POJO 类来传递数据。烦得很&#xff1f;别急&#xff0c;Kotlin 贴心的 数据类 能帮你自动生成 equals、hashCode&#xff0c;直接省时省力&#xff01;再想想需要多种状…

多版本并发控制:MVCC的作用和基本原理

多版本并发控制&#xff1a;MVCC的作用和基本原理 1、MVCC简介1.1 快照读与当前读的区别1.1.1 快照读1.1.2 当前读 1.2 数据库的读写问题1.3 MVCC的作用 2、MVCC实现原理之ReadView2.1 什么是ReadView2.2 ReadView的设计思路2.3 MVCC整体操作流程 1、MVCC简介 1.1 快照读与当前…

Docker—搭建Harbor和阿里云私有仓库

Harbor概述 Harbor是一个开源的企业级Docker Registry管理项目&#xff0c;由VMware公司开发。‌它的主要用途是帮助用户迅速搭建一个企业级的Docker Registry服务&#xff0c;提供比Docker官方公共镜像仓库更为丰富和安全的功能&#xff0c;特别适合企业环境使用。‌12 Harb…

HarmonyOS:创建应用静态快捷方式

一、前言 静态快捷方式是一种在系统中创建的可以快速访问应用程序或特定功能的链接。它通常可以在长按应用图标&#xff0c;以图标和相应的文字出现在应用图标的上方&#xff0c;用户可以迅速启动对应应用程序的组件。使用快捷方式&#xff0c;可以提高效率&#xff0c;节省了查…

从表人的相关单词聊起

英文单词是繁多的&#xff0c;甚至海量的&#xff0c;这和老外的思维方式有关&#xff0c;他们通常会为同一类事物的具体的东西或子类事物也专门创建一个单词来进行表达、表示或应对&#xff0c;这增加了表达的直接性和精确性&#xff0c;但是&#xff0c;也轻而易举地就创建出…

低代码系统-产品架构案例介绍、轻流(九)

轻流低代码产品定位为零代码产品&#xff0c;试图通过搭建来降低企业成本&#xff0c;提升业务上线效率。 依旧是从下至上&#xff0c;从左至右的顺序 名词概述运维层底层系统运维层&#xff0c;例如上线、部署等基础服务体系内置的系统能力&#xff0c;发消息、组织和权限是必…

2025年美赛B题-结合Logistic阻滞增长模型和SIR传染病模型研究旅游可持续性-成品论文

模型设计思路与创新点&#xff1a; 建模的时候应该先确定我们需要建立什么类的模型&#xff1f;优化类还是统计类&#xff1f;这个题需要大量的数据分析&#xff0c;因此我们可以建立一个统计学模型。 统计学建模思路&#xff1a;观察规律&#xff0c;建立模型&#xff0c;参…

自由学习记录(32)

文件里找到切换颜色空间 fgui中的 颜色空间是一种总体使用前的设定 颜色空间&#xff0c;和半透明混合产生的效果有差异&#xff0c;这种问题一般可以产生联系 动效就是在fgui里可以编辑好&#xff0c;然后在unity中也准备了对应的调用手段&#xff0c;可以详细的使用每一个具…

【2025AI发展预测】2.2025的风口与发展,我们如何主动拥抱这一浪潮

个人主页&#xff1a;Icomi 大家好我是一颗米&#xff0c;本系列文章包含我个人的一些思考见解&#xff0c;以及在网上看到的相关资讯&#xff0c;结合本人的认识&#xff0c;在那基础上进行加工输出&#xff0c;希望能帮助到各位&#xff0c;若您对本系列感兴趣&#xff0c;欢…

操作系统(Linux Kernel 0.11Linux Kernel 0.12)解读整理——内核初始化(main init)之硬盘初始化

前言 对硬盘和软盘块设备上数据的读写操作是通过中断处理程序进行的。内核每次读写的数据量以一个逻辑块(1024 字节)为单位&#xff0c;而块设备控制器则是以扇区(512字节)为单位访问块设备。在处理过程中&#xff0c;内核使用了读写请求项等待队列来顺序地缓冲一次读写多个逻…

利用机器学习创建基于位置的推荐程序

推荐系统被广泛应用于不同的应用程序中&#xff0c;用于预测用户对产品或服务的偏好或评价。在过去的几分钟或几小时里&#xff0c;你很可能在网上遇到过或与某种类型的推荐系统进行过互动。这些推荐系统有不同的类型&#xff0c;其中最突出的包括基于内容的过滤和协作过滤。在…

【AI论文】Video-MMMU:评估从多学科专业视频中获取知识的能力

摘要&#xff1a;人类通过三个认知阶段获取知识&#xff1a;感知信息、理解知识以及运用知识解决新问题。视频作为这一学习过程的有效媒介&#xff0c;促进了这些认知阶段的逐步推进。然而&#xff0c;现有的视频基准测试未能系统地评估大型多模态模型&#xff08;LMMs&#xf…