使用 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
