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

news/2025/2/19 8:31:23/

文章目录

      • 什么是硅基流动(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:安装必要的库

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

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__()@propertydef _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 responseif __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 脚本:

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


http://www.ppmy.cn/news/1571894.html

相关文章

vm vitualbox和主机ssh连接,使用net 和仅主机网卡连接

你是否发生了虚拟机ping通主机,主机ping不同虚拟机的现象 仅主机连接方式 你是否发生了打开防火墙和端口却无论如何都用不了SSH 端口转发 -------------------------------------------------------------- 虚拟机有三种连接方式 桥接 net 仅主机 …

Python教程:@staticmethod静态方法的简单示例

在Python编程语言中,staticmethod 是一个装饰器(decorator),用于声明一个方法为静态方法。静态方法不需要访问类的属性或方法,也不需要实例化类就可以直接通过类名调用。它不接受 self 或 cls 参数,这意味着…

PHP 调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件

脚本概述 PHP 调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件。 代码结构 依赖引入 require_once vendor/autoload.php; use OpenAI\Client;使用 Composer 的自动加载机制引入 OpenAI PHP 客户端库 文件路径处理 $speechFilePath…

安科瑞能源物联网平台在老旧小区用电安全改造中的应用与优势

1、现状 在我国城市化进程快速推进的当下,老旧住宅小区作为城市发展的历史见证者,其用电问题愈发凸显,亟待解决。这些老旧小区大多建于上世纪八九十年代,甚至更早,当时的电力设计标准已远不能满足如今居民日益增长的用…

Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)

一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架,可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序,比如 控制台工具和服务器。Qt是面向对象的框架,使用特殊的代…

ONES 功能上新|ONES Copilot、ONES TestCase、ONES Wiki 新功能一览

ONES Copilot 支持基于当前查看的工作项相关信息,利用 AI 模型,在系统中进行相似工作项的查找,包括基于已关联工作项的相似数据查找。 应用场景: 在查看工作项时,可利用 AI 模型,基于语义相似度&#xff0c…

能否详细讲解uni.request的各种参数和用法?

uni.request 是 Uni-App 提供的用于进行网络请求的 API,支持多种请求方式(如 GET、POST 等),并且可以处理请求的参数、头部、超时等设置。以下是对 uni.request 的各种参数和用法的详细讲解。 1. 基本用法 uni.request 的基本用…

今日AI和商界事件(2025-02-13)

今日AI领域的主要事件包括: 一、OpenAI相关动态 取消独立发布o3模型计划: OpenAI首席执行官奥尔特曼宣布,公司取消独立发布o3模型的计划。未来几个月内,OpenAI将推出GPT-5,该模型将整合多项技术,并应用于C…