LangChain --- 如何连接硅基流动(SiliconFlow)

最近刚刚着手学习LangChain,学习了部分原理,参考上一篇文章

LangChain 学习记录 (1)

在刚刚准备上手实践就遇到了问题。由于国内限制,在我的本地调用Google和OpenAI的API一直不通。于是想起了硅基流动平台上的诸多模型,但中途一直提示我的token无效,无奈只能参考其他人的博客,终于找到了对应的方法。

 一、硅基流动(SiliconFlow)

官网:硅基流动(SiliconFlow)

siliconflow 集合了顶尖大模型, 致力于为开发者提供更快、更全面、体验更丝滑的模型 API,助力开发者和企业聚焦产品创新,无须担心产品大规模推广所带来的高昂算力成本。

1、关于模型

注册并登录硅基流动后,会有部分赠送金额,可用于体验付费模型。

具体每个模型的计费可在模型广场内点击查看,如图所示

 2、创建API密钥

在左侧点击API密钥,点击新建API密钥

如图所示的密钥描述可随便自定义,该密钥权限拥有账户的完整权限,注意不要泄露。 

创建完成后,点击密钥即可复制;或者点击右侧的复制图标

二、使用LangChain进行连接

1、选择模型

可选择免费的模型进行代码调试,避免浪费调用次数。

打开模型筛选器,选择只看免费,随机挑选一个模型即可

2、查看URL

点击模型,查看API文档

在如下图位置可找到url

3、代码

3.1 将API密钥配置为环境变量(可选)

该步骤可选,不配置变量可在初始化模型时直接传入

import os
os.environ['siliconFlow'] = "your siliconFlow API Key"

3.2 初始化Chat模型

次数的openai_api_base的值为上面介绍的url,但不为同一层级

使用上述完整的url会提示页面不存在或无效令牌

模型这里选用了免费的Qwen/Qwen3-8B进行调试

llm = ChatOpenAI(
    openai_api_base = "https://api.siliconflow.cn/v1/",
    openai_api_key = os.environ['siliconflow'],
    model_name = "Qwen/Qwen3-8B",  # 模型名称
)

3.3 Prompt

prompt的配置有不同的方式,但整体含义基本相同

3.3.1 langchain_core.messages
from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="把这段话从中文翻译成英语"),
    HumanMessage(content="你好,我正在学习langchain,请问有什么推荐")
]

3.3.2 langchain_core.prompts

langchain_core.prompts 的参数有两种不同形式

Instantiation from a list of message templates:

from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    SystemMessage("把这段话从中文翻译成英语"),
    HumanMessage("你好,我正在学习langchain,请问有什么推荐")
])

Instantiation from mixed message formats:

from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    SystemMessage("把这段话从中文翻译成英语"),
    ("uers", "你好,我正在学习langchain,请问有什么推荐")
])

以format形式传入

from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    SystemMessage("把这段话从中文翻译成英语"),
    ("user", "{input}")
])

chain.invoke({"input": "你好,我正在学习langchain,请问有什么推荐"})

3.4 输出解析(StrOutputParser)

from langchain_core.output_parsers import StrOutputParser

output_parser = StrOutputParser()

3.5 组合可执行的链

使用 LCEL 的管道操作符(|)

chain = prompt|llm|output_parser

3.6 chain.invoke({})

如果 ChatPromptTemplate 中有 {input} 类似的占位符,可在chain.invoke时传入

prompt = ChatPromptTemplate.from_messages([
    SystemMessage("把这段话从中文翻译成英语"),
    ("user", "{input}")
])

# 。。。 中间代码部分省略

chain.invoke({"input": "你好,我正在学习langchain,请问有什么推荐"})

如果 ChatPromptTemplate 中没有 {input} 类似的占位符,需要在chain.invoke时传入空字典

prompt = ChatPromptTemplate.from_messages([
    SystemMessage("把这段话从中文翻译成英语"),
    ("user", "你好,我正在学习langchain框架,请问有什么推荐")
])

# 。。。 中间代码部分省略

chain.invoke({})

三、完整代码

import os

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate


os.environ['siliconflow'] = 'your siliconFlow API Key'

llm = ChatOpenAI(
    openai_api_base = "https://api.siliconflow.cn/v1/",
    openai_api_key = os.environ['siliconflow'],
    model_name = "Qwen/Qwen3-8B",  # 模型名称
)
output_parser = StrOutputParser()


# prompt 无format标识
prompt = ChatPromptTemplate.from_messages([
    SystemMessage("把这段话从中文翻译成英语"),
    ("user", "你好,我正在学习langchain,请问有什么推荐")
])
chain = prompt | llm | output_parser
chain.invoke({})
# Hello, I'm currently learning LangChain. Do you have any recommendations?


# prompt 有format标识
prompt1 = ChatPromptTemplate.from_messages([
    SystemMessage("把这段话从中文翻译成英语"),
    ("user", "{input}")
])
chain1 = prompt1 | llm | output_parser
chain1.invoke({"input": "你好,我正在学习langchain,请问有什么推荐"})
# Hello, I'm currently learning LangChain. Do you have any recommendations?


# 使用messages
messages = [
    SystemMessage(content="把这段话从中文翻译成英语"),
    HumanMessage(content="你好,我正在学习langchain,请问有什么推荐")
]
llm.invoke(messages)

# content="\n\nHello, I'm currently studying LangChain. Could you recommend any resources or learning methods?" additional_kwargs={'refusal': None} response_metadata={'token_usage': {'completion_tokens': 555, 'prompt_tokens': 32, 'total_tokens': 587, 'completion_tokens_details': {'accepted_prediction_tokens': None, 'audio_tokens': None, 'reasoning_tokens': 536, 'rejected_prediction_tokens': None}, 'prompt_tokens_details': None}, 'model_name': 'Qwen/Qwen3-8B', 'system_fingerprint': '', 'id': '0197e954b3731c988de0e0ae8c31c8de', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None} id='run--40e30cae-d9f9-4da6-8a3a-2efe09fc3ded-0' usage_metadata={'input_tokens': 32, 'output_tokens': 555, 'total_tokens': 587, 'input_token_details': {}, 'output_token_details': {'reasoning': 536}}

如上就是关于如何使用langchain连接硅基流动(siliconFlow),希望可以帮助各位更好的理解和构建简单的LLM链。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值