langchain调用星火大模型
在langchain中调用星火大模型直接调用星火大模型默认调用的是3.0模型。
from langchain_community.llms import SparkLLM
llm=SparkLLM()
即使加上model参数指明调用模型,依然没有效果。
例如下面调用
llm=SparkLLM(model='generalv3.5')
源码
查看官方文档没有找到说明如何指定其他版本
后来查看源码:
发现参数self.spark_demo
,该参数如果spark_demo为空下,默认就是选择3模型
self.spark_domain = spark_domain or "generalv3"
再看spark_demo变量 赋值的是参数values["spark_llm_domain"]
的内容。而values["spark_llm_domain"]
内容是通过以下函数得到
values["spark_llm_domain"] = get_from_dict_or_env(
values,
"spark_llm_domain",
"IFLYTEK_SPARK_LLM_DOMAIN",
"generalv3",
)
通过查询该方法,得知该方法默认从环境变量"IFLYTEK_SPARK_LLM_DOMAIN"
获取值,如果没有就返回默认值。这里定义默认值就是generalv3
也就是最后一个参数。
if env_key in os.environ and os.environ[env_key]:
return os.environ[env_key]
elif default is not None:
return default
else:
raise ValueError(
f"Did not find {key}, please add an environment variable"
f" `{env_key}` which contains it, or pass"
f" `{key}` as a named parameter."
)
使用星火3以外其他模型
通过查询代码可以得知,模型名通过从环境变"IFLYTEK_SPARK_LLM_DOMAIN"
获取值。如果不修改框架代码下可以直接设置环境变量指定模型,查询官方文档得知,使用wss服务时,每个模型对应地址也要随之改变。因此地址也要随着修改。地址也是通过环境变量修改
import os
# 修改使用模型为讯飞3.5
os.environ['IFLYTEK_SPARK_API_URL']='wss://spark-api.xf-yun.com/v3.5/chat'
os.environ["IFLYTEK_SPARK_API_SECRET"] = config.app_secret
下面是官方文档中对应的地址和模型名
general指向Lite版本;
generalv2指向V2.0版本;
generalv3指向Pro版本;
pro-128k指向Pro-128K版本;
generalv3.5指向Max版本;
4.0Ultra指向4.0 Ultra版本;
模型名 | 地址 |
---|---|
Spark4.0 Ultra | wss://spark-api.xf-yun.com/v4.0/chat |
Spark Max | wss://spark-api.xf-yun.com/v3.5/chat |
Spark Pro-128K | wss://spark-api.xf-yun.com/chat/pro-128k |
Spark Pro | wss://spark-api.xf-yun.com/v3.1/chat |
Spark V2.0 | wss://spark-api.xf-yun.com/v2.1/chat |
Spark Lite | wss://spark-api.xf-yun.com/v1.1/chat |