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

news2025/1/27 21:26:07

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

八股学习 微服务篇

微服务篇 常见面试内容Spring Cloud 常见组件注册中心Ribbon负载均衡策略服务雪崩 常见面试内容 Spring Cloud 常见组件 Spring Cloud有5个常见组件: Eureka/Nacos:注册中心;Ribbon:负载均衡;Feign:远程调用;Hystrix/Sentinel:服…

【xcode 16.2】升级xcode后mac端flutter版的sentry报错

sentry_flutter 7.11.0 报错 3 errors in SentryCrashMonitor_CPPException with the errors No type named terminate_handler in namespace std (line 60) and No member named set_terminate in namespace std 替换sentry_flutter版本为: 8.3.0 从而保证oc的…

electron打包客户端在rk3588上支持h265硬解

目录 前言 chromium是如何支持h265硬解 electron/chromium第一次编译 electron/chromium第二次编译 前言 我们的客户端程序是用electron打包的前端程序,其在rk3588主机上的linux环境运行。之前使用客户端查看h264编码的视频直播是没有问题的,但视频源…

基于物联网的风机故障检测装置的设计与实现

1 系统总体设计方案 通过对风机故障检测装置的设计与实现的需求、可行性进行分析,本设计风机故障检测装置的设计与实现的系统总体架构设计如图2-1所示,系统风机故障检测装置采用STM32F103单片机作为控制器,并通过DS18B20温度传感器、ACS712电…

为什么IDEA提示不推荐@Autowired❓️如果使用@Resource呢❓️

前言 在使用 Spring 框架时,依赖注入(DI)是一个非常重要的概念。通过注解,我们可以方便地将类的实例注入到其他类中,提升开发效率。Autowired又是被大家最为熟知的方式,但很多开发者在使用 IntelliJ IDEA …

软件工程的概论

软件的概念与特点 软件的定义 软件 程序 数据 文档 软件的特征 1。软件是人开发的 2。软件生产是简单的拷贝 3。软件会多次生产 4。软件开发环境对产品影响很大 5。 软件的双重作用 一方面是一种产品另一方面是开发其他软件产品的工具。 软件分类 按软件功能&…

1. 握手问题python解法——2024年省赛蓝桥杯真题

原题传送门:1.握手问题 - 蓝桥云课 问题描述 小蓝组织了一场算法交流会议,总共有 50人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人,…

【Uniapp-Vue3】setTabBar设置TabBar和下拉刷新API

一、setTabBar设置 uni.setTabBarItem({ index:"需要修改第几个", text:"修改后的文字内容" }) 二、tabBar的隐藏和显式 // 隐藏tabBar uni.hideTabBar(); // 显示tabBar uni.showTabBar(); 三、为tabBar右上角添加文本 uni.setTabBarBadge({ index:"…

Visual Studio Code修改terminal字体

个人博客地址:Visual Studio Code修改terminal字体 | 一张假钞的真实世界 默认打开中断后字体显示如下: 打开设置,搜索配置项terminal.integrated.fontFamily,修改配置为monospace。修改后效果如下:

使用ArcMap或ArcGIS Pro连接达梦数据库创建空间数据库

一、ArcMap 1、本地windows安装 32 位 DM 数据库客户端 2、覆盖dll 将 32 位 DM 数据的..\dmdbms\bin 目录中的 .dll 文件全部拷贝到 ArcGIS 的 ..\Desktop10.5\bin 目录下,有同名文件直接覆盖掉 3、开启达梦数据库空间扩展支持 使用管理员用户登录数据&#xff…

案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设

浪潮云洲工业互联网有限公司(以下简称为“浪潮云洲”)成立于2018年,定位于工业数字基础设施建设商、具有国际影响力的工业互联网平台运营商、生产性互联网头部服务商。截至目前,浪潮云洲工业互联网平台连续五年入选跨行业跨领域工…

ASP.NET Core 6.0 如何处理丢失的 Startup.cs 文件

介绍 .NET 6.0 已经发布,ASP.NET Core 6.0 也已发布。其中有不少变化让很多人感到困惑。例如,“谁动了我的奶酪”,它在哪里Startup.cs?在这篇文章中,我将深入研究这个问题,看看它移动到了哪里以及其他变化。…

iOS 集成ffmpeg

前言 本来打算用flutter去实现一个ffmpeg的项目的,不过仔细分析了一下,我后期需要集成OpenGL ES做视频渲染处理,OpenGL ES的使用目前在flutter上面还不是很成熟,所以最后还是选择用原生来开发 ffmpeg集成到iOS工程 iOS对于ffmp…

基于微信小程序的移动学习平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

WPS计算机二级•幻灯片的基础操作

听说这是目录哦 PPT的正确制作步骤🛣️认识PPT界面布局🏜️PPT基础操作 快捷键🏞️制作PPT时 常用的快捷技巧🏙️快速替换PPT的 文本字体🌃快速替换PPT 指定文本内容🌅能量站😚 PPT的正确制作步…

Arcgis国产化替代:Bigemap Pro正式发布

在数字化时代,数据如同新时代的石油,蕴含着巨大的价值。从商业决策到科研探索,从城市规划到环境监测,海量数据的高效处理、精准分析与直观可视化,已成为各行业突破发展瓶颈、实现转型升级的关键所在。历经十年精心打磨…

GitLab配置免密登录和常用命令

SSH 免密登录 Windows免密登录 删除现有Key 访问目录:C:\Users\Administrator\ .ssh,删除公钥:id_rsa.pub ,私钥:id_rsa 2.生成.ssh 秘钥 运行命令生成.ssh 秘钥目录( ssh-keygen -t rsa -C xxxxxx126.…

警企联动齐发力、共筑反诈“防护墙”

2025年1月10日是第五个中国人民警察节,南通移动联合南通公安反诈中心,深入社区商圈,开展防范电信网络诈骗宣传活动,进一步增强广大人民群众的反诈意识和能力,全力守护好群众的“钱袋子”。 当日,活动现场一大早就呈现出一片忙碌景象,工作人员支起摊位,将各类精心制作的反诈宣传…

新版IDEA创建数据库表

这是老版本的IDEA创建数据库表,下面可以自己勾选Not null(非空),Auto inc(自增长),Unique(唯一标识)和Primary key(主键) 这是新版的IDEA创建数据库表,Not null和Auto inc可以看得到,但Unique和Primary key…

分布式微服务系统简述

distributed microservice 分布式与微服务的定义及关系;分布式微服务架构里的各组件,如:配置中心、服务注册/发现、服务网关、负载均衡器、限流降级、断路器、服务调用、分布式事务等;spring cloud 介绍及实现案例,如…