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

相关推荐
lusasky1 天前
AgentScope、LangChain、AutoGen 全方位对比 + 混用可行性指南
microsoft·langchain
前端阿森纳2 天前
从产品经理视角拆解 LangChain 的抽象设计
langchain·llm·aigc
大模型真好玩2 天前
LangGraph1.0速通指南(一)—— LangGraph1.0 核心概念、点、边
人工智能·langchain·agent
阿里云云原生2 天前
AgentRun Sandbox SDK 正式开源!集成 LangChain 等主流框架,一键开启智能体沙箱新体验
阿里云·langchain·开源·serverless·agentarun
、、、、南山小雨、、、、2 天前
最简单的LangChain和RAG
langchain
路边草随风2 天前
langchain agent动态变更系统prompt
人工智能·python·langchain·prompt
Jack___Xue2 天前
LangChain实战快速入门笔记(六)--LangChain使用之Agent
笔记·langchain·unix
大模型教程3 天前
使用Langchain4j和Ollama3搭建RAG系统
langchain·llm·ollama
Elwin Wong3 天前
本地运行LangChain Agent用于开发调试
人工智能·langchain·大模型·llm·agent·codingagent
FreeCode3 天前
智能体设计模式解析:ReAct模式
设计模式·langchain·agent