使用 LangChain 对接硅基流动(SiliconFlow)API:构建一个智能对话系统

文章目录

      • 什么是硅基流动(SiliconFlow)?
      • [LangChain 简介](#LangChain 简介)
      • [在 LangChain 中对接硅基流动](#在 LangChain 中对接硅基流动)
      • [步骤 1:安装必要的库](#步骤 1:安装必要的库)
      • [步骤 2:设置 API 密钥](#步骤 2:设置 API 密钥)
      • [步骤 3:编写代码](#步骤 3:编写代码)
      • 代码解析
      • [步骤 4:运行代码](#步骤 4:运行代码)
      • 如何扩展和改进
      • 总结

在现代人工智能应用中,大语言模型(LLM)已经成为了智能对话、内容生成和信息处理的核心工具。LangChain 是一个框架,用于构建与 LLM 相关的应用程序,提供了很多模块化工具,帮助开发者轻松地集成、管理和部署 LLM。在本文中,我们将介绍如何使用 LangChain 框架将硅基流动(SiliconFlow)的 API 集成到应用中,实现一个基于 LLM 的对话系统。

什么是硅基流动(SiliconFlow)?

硅基流动是一种基于大语言模型(如深度学习模型)提供自然语言处理能力的 API 服务。它支持多种类型的模型,可以通过 REST API 接口与其进行交互,进行自然语言生成、问答、文本处理等任务。

LangChain 简介

LangChain 是一个用于创建与 LLM 相关应用的工具库,它提供了一些功能强大的模块,允许开发者更容易地将 LLM 集成到应用程序中。LangChain 支持任务链、记忆管理、外部 API 集成等特性,帮助开发者创建复杂的智能应用。

在 LangChain 中对接硅基流动

本文将通过以下步骤,向大家展示如何使用 LangChain 对接硅基流动 API,构建一个简单的对话系统。

步骤 1:安装必要的库

在开始之前,确保你已经安装了 langchainrequests 库。你可以使用以下命令来安装它们:

bash 复制代码
pip install langchain requests

步骤 2:设置 API 密钥

硅基流动提供了 API 服务,你需要在硅基流动平台上注册并获取 API 密钥。在代码中,我们会通过环境变量来传递该密钥。

bash 复制代码
export CUSTOM_API_KEY="your_api_key_here"

步骤 3:编写代码

下面是通过 LangChain 框架对接硅基流动的 Python 代码示例:

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)

代码解析

  1. 导入必要模块

    • 我们首先导入了 LangChain 中的 LLM 基类和 enforce_stop_tokens 工具。
    • 使用 requests 库与硅基流动的 API 进行 HTTP 请求。
    • 使用 os 获取环境变量中的 API 密钥。
  2. SiliconFlow

    • 该类继承自 LLM,并实现了 _call 方法,用于处理对硅基流动 API 的调用。
    • siliconflow_completions 方法向硅基流动 API 发送请求并获取返回结果。它接受 modelprompt 参数,前者指定使用的模型(例如 deepseek-ai/DeepSeek-V2.5),后者是用户输入的提示信息。
  3. API 请求

    • 我们通过 requests.post 向硅基流动的 API 发送 POST 请求,携带用户输入的 prompt 和其他必要的请求头。
    • API 返回的是 JSON 格式的数据,我们提取其中的对话内容并返回给用户。
  4. _call 方法

    • 这是 LangChain 框架中用来发起请求的主要方法,它接收用户的 prompt,并将其传递给 siliconflow_completions 方法进行处理。
    • 如果传入 stop 参数,它会应用 enforce_stop_tokens 来控制响应的停止符。

步骤 4:运行代码

在终端中运行该 Python 脚本:

bash 复制代码
python siliconflow_langchain.py

你会看到输出的结果类似于:

复制代码
你是谁?
我是一个基于硅基流动的 AI 模型,我可以帮助你处理各种任务。

如何扩展和改进

  • 多轮对话:目前,代码只处理单轮对话。如果需要多轮对话,可以通过在每次请求时传递之前的对话记录来维持上下文。

    示例:

    python 复制代码
    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

相关推荐
这是谁的博客?18 小时前
LangChain第三页【操作指南】_【如何缓存对话模型响应】翻译完成
缓存·langchain
kyle-fang1 天前
langchain-基于agent架构的开发
langchain
大模型教程1 天前
LangGraph实战教程(1)- 从零开始认识LangGraph
langchain·llm·agent
kyle-fang2 天前
langchain概述
langchain
xixixi777772 天前
LangChain(一个用于构建大语言模型(LLM)应用程序的开源框架)
人工智能·深度学习·机器学习·langchain·大模型·大模型框架
玉龙婉雪2 天前
【LangGraph】ReAct构建-LangGraph简单实现
langchain·langgraph
AI大模型3 天前
手把手教:LangChain+Qwen3搭建本地RAG问答系统,从0到1全流程
程序员·langchain·llm
码农阿日3 天前
【日常学习-理解Langchain】从问题出发,我理解了LangChain为什么必须这么设计
服务器·学习·langchain
2202_756749693 天前
LangChain:LLMs和ChatModels介绍、LangChain 集成大模型的本地部署与 API 调用实践、提示词prompt、输出解析器、链
人工智能·langchain·prompt
学Linux的语莫4 天前
langchain输出解析器
java·前端·langchain