使用 LangChain 对接硅基流动(SiliconFlow)API:构建一个智能对话系统
文章目录
- 什么是硅基流动(SiliconFlow)?
- LangChain 简介
- 在 LangChain 中对接硅基流动
- 步骤 1:安装必要的库
- 步骤 2:设置 API 密钥
- 步骤 3:编写代码
- 代码解析
- 步骤 4:运行代码
- 如何扩展和改进
- 总结
在现代人工智能应用中,大语言模型(LLM)已经成为了智能对话、内容生成和信息处理的核心工具。LangChain 是一个框架,用于构建与 LLM 相关的应用程序,提供了很多模块化工具,帮助开发者轻松地集成、管理和部署 LLM。在本文中,我们将介绍如何使用 LangChain 框架将硅基流动(SiliconFlow)的 API 集成到应用中,实现一个基于 LLM 的对话系统。
什么是硅基流动(SiliconFlow)?
硅基流动是一种基于大语言模型(如深度学习模型)提供自然语言处理能力的 API 服务。它支持多种类型的模型,可以通过 REST API 接口与其进行交互,进行自然语言生成、问答、文本处理等任务。
LangChain 简介
LangChain 是一个用于创建与 LLM 相关应用的工具库,它提供了一些功能强大的模块,允许开发者更容易地将 LLM 集成到应用程序中。LangChain 支持任务链、记忆管理、外部 API 集成等特性,帮助开发者创建复杂的智能应用。
在 LangChain 中对接硅基流动
本文将通过以下步骤,向大家展示如何使用 LangChain 对接硅基流动 API,构建一个简单的对话系统。
步骤 1:安装必要的库
在开始之前,确保你已经安装了 langchain
和 requests
库。你可以使用以下命令来安装它们:
pip install langchain requests
步骤 2:设置 API 密钥
硅基流动提供了 API 服务,你需要在硅基流动平台上注册并获取 API 密钥。在代码中,我们会通过环境变量来传递该密钥。
export CUSTOM_API_KEY="your_api_key_here"
步骤 3:编写代码
下面是通过 LangChain 框架对接硅基流动的 Python 代码示例:
from langchain.llms.base import LLM
from langchain_community.llms.utils import enforce_stop_tokens
import requests
import os
# 设置API密钥和基础URL环境变量
API_KEY = os.getenv("CUSTOM_API_KEY", "sk-xxx")
BASE_URL = "https://api.siliconflow.cn/v1/chat/completions"
class SiliconFlow(LLM):
def __init__(self):
super().__init__()
@property
def _llm_type(self) -> str:
return "siliconflow"
def siliconflow_completions(self, model: str, prompt: str) -> str:
payload = {
"model": model,
"messages": [{"role": "user", "content": prompt}],
"stream": False
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": f"Bearer {API_KEY}"
}
response = requests.post(BASE_URL, json=payload, headers=headers)
response.raise_for_status()
return response.json()["choices"][0]["message"]["content"]
def _call(self, prompt: str, stop: list = None, model: str = "default-model") -> str:
response = self.siliconflow_completions(model=model, prompt=prompt)
if stop is not None:
response = enforce_stop_tokens(response, stop)
return response
if __name__ == "__main__":
llm = SiliconFlow()
response = llm._call(prompt="你是谁?", model="deepseek-ai/DeepSeek-V2.5")
print(response)
代码解析
-
导入必要模块:
- 我们首先导入了 LangChain 中的
LLM
基类和enforce_stop_tokens
工具。 - 使用
requests
库与硅基流动的 API 进行 HTTP 请求。 - 使用
os
获取环境变量中的 API 密钥。
- 我们首先导入了 LangChain 中的
-
SiliconFlow
类:- 该类继承自
LLM
,并实现了_call
方法,用于处理对硅基流动 API 的调用。 siliconflow_completions
方法向硅基流动 API 发送请求并获取返回结果。它接受model
和prompt
参数,前者指定使用的模型(例如deepseek-ai/DeepSeek-V2.5
),后者是用户输入的提示信息。
- 该类继承自
-
API 请求:
- 我们通过
requests.post
向硅基流动的 API 发送 POST 请求,携带用户输入的prompt
和其他必要的请求头。 - API 返回的是 JSON 格式的数据,我们提取其中的对话内容并返回给用户。
- 我们通过
-
_call
方法:- 这是 LangChain 框架中用来发起请求的主要方法,它接收用户的
prompt
,并将其传递给siliconflow_completions
方法进行处理。 - 如果传入
stop
参数,它会应用enforce_stop_tokens
来控制响应的停止符。
- 这是 LangChain 框架中用来发起请求的主要方法,它接收用户的
步骤 4:运行代码
在终端中运行该 Python 脚本:
python siliconflow_langchain.py
你会看到输出的结果类似于:
你是谁?
我是一个基于硅基流动的 AI 模型,我可以帮助你处理各种任务。
如何扩展和改进
-
多轮对话:目前,代码只处理单轮对话。如果需要多轮对话,可以通过在每次请求时传递之前的对话记录来维持上下文。
示例:
context = [{"role": "user", "content": "你是谁?"}, {"role": "assistant", "content": "我是一个 AI 模型"}] response = llm._call(prompt="你能做什么?", model="deepseek-ai/DeepSeek-V2.5", context=context)
-
增强功能:你可以通过集成更多的外部数据源(如数据库、API、文件系统等)来增强应用的功能,支持更复杂的任务自动化和知识处理。
总结
通过 LangChain 框架集成硅基流动(SiliconFlow)API,可以构建功能强大的 LLM 应用。本文介绍了如何使用 LangChain 创建一个简单的对话系统,并通过硅基流动的 API 来处理自然语言任务。无论是单轮对话还是多轮对话,LangChain 都提供了灵活的工具来帮助开发者高效地构建与 LLM 相关的应用。
通过对接不同的 LLM 和外部服务,开发者可以轻松地创建各种类型的智能应用,推动 AI 技术在实际业务中的落地。
提示:更多内容可以访问Clang’s Blog:https://www.clang.asia