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

相关推荐
merlin-mm17 分钟前
langchain应用-agent
langchain
朴拙数科11 小时前
Langchain vs. LlamaIndex:哪个在集成MongoDB并分析资产负债表时效果更好?
数据库·mongodb·langchain
静静的喝酒4 天前
langchain学习笔记之消息存储在内存中的实现方法
langchain·消息存储·内存存储
Rickie4 天前
DeepSeek-V3 解读:优化效率与规模
langchain·rag·deepseek
少林码僧4 天前
1.5 企业级AI大模型四阶技术全景解析:从Prompt到Pre-training的进化路径
人工智能·gpt·chatgpt·langchain·prompt
海绵波波1076 天前
Langchain对管道操作符|的重构实现链式流程
python·重构·langchain
morning_sir_jking6 天前
【无标题】
ai·langchain
nmblr8 天前
LangChain基础篇 (06)
langchain
每天看一遍,防止恋爱&&堕落9 天前
5、大模型的记忆与缓存
缓存·langchain·大模型·llm·agent·大模型缓存