引言
各位看官,最近是不是被各种 AI 框架搞得眼花缭乱?别慌,今天我来给大家伙儿介绍一个神器 —— LangChain!它就像一个 AI 界的“瑞士军刀”,让咱们这些“代码搬运工”也能轻松玩转大模型。😎
起飞前的热身:ModelScope 和 Python Notebook
首先,咱们来聊聊“装备”。 在我开始折腾LangChain之前,我在ModelScope(魔搭)社区溜达了一圈,这地儿简直就是国内 AI 模型的“淘宝”,各种开源模型应有尽有,跟国外的 HuggingFace 有的一拼!
(小 Tips:ModelScope 就像 AI 界的“宝藏”,没事儿多去逛逛,说不定能淘到啥好东西!💎)
然后,我祭出了我的秘密武器 —— Python Notebook(.ipynb 文件)。这玩意儿简直就是搞 NLP 和数据分析的 “神器”。 它可以让我们把算法 idea、测试模型、随便写写代码都塞到一个文件里,还能直接运行,简直不要太方便!
(小 Tips:Python Notebook 就像咱们的“草稿本”,可以随便涂涂画画,还不用担心找不到!✍️ )
为什么要选 LangChain?因为它懒啊!😂
你可能会问,市面上那么多 AI 框架,为啥非要选 LangChain? 答案很简单:因为它够懒!哦不,是够“方便”!它最大的优点就是可以让你在各种大模型之间无缝切换,不用为不同的模型写不同的代码,简直就是“懒人福音”!
(小 Tips:LangChain 就是一个“模型转换器”,让你不用在不同模型之间来回倒腾,省时省力! 💪)
Langchain_openai:让 OpenAI 更听话的小助手
有了 LangChain,我们用 OpenAI 就更方便啦!它把 OpenAI 的 API 封装起来,让我们的 AI 应用始终保持高水准。更棒的是,它还能让我们把底层的模型给“抽象”出来,这样想换模型就换模型,完全不用担心代码要大改!而且速度是真的快,体验感拉满!
(小 Tips:Langchain_openai 就像 OpenAI 的“私人订制”,让你用得更舒服,效率更高! 🚀)
Langchain.schema:给数据“穿上马甲”
LangChain 里的 langchain.schema 模块就像一个“数据结构设计师”,它预先定义了各种数据结构,比如 HumanMessage(人类说的话) 和 SystemMessage(系统说的话)。这让我们的代码更加规范,也更易于维护。
(小 Tips:langchain.schema 就像“数据结构的模具”,让我们的数据井井有条,一目了然! 🗂️ )
Langchain.prompts:进入 AI 全栈的“敲门砖”
终于来到重头戏 —— langchain.prompts!这个模块可以说是进入 AI 全栈领域的标志。 Prompt(提示词) 是我们跟 AI 交流的关键,也是 AI 应用的核心。而 PromptTemplate 就像一个 “Prompt 生成器”,可以让我们轻松创建各种 Prompt 模板。
我们不仅可以从模板生成 prompt, 还能使用 format 方法,将模板和数据结合起来,生成最终的 prompt。这简直就是 “一键生成 Prompt” 的神器,妈妈再也不用担心我不会写 Prompt 了!
(小 Tips:langchain.prompts 就像 AI 界的 “文案大师”,让你轻松写出高质量的 Prompt! 📝 )
代码实战:用 Python Notebook “调戏” AI
接下来,我就用我之前写的四个 .ipynb 文件来给大家伙儿展示一下,LangChain 到底有多好玩!
1. 初探 OpenAI:给玫瑰花写句广告语
# 导入内置 操作系统模块
import os
# 环境变量
os.environ["OPENAI_API_KEY"] = "你的API密钥" # 替换成你的 API 密钥
os.environ["OPENAI_BASE_URL"] = "https://api.302.ai/v1" # 替换成你的 API 地址
from langchain_openai import OpenAI
# 实例化
llm = OpenAI(
model_name="gpt-3.5-turbo-instruct",
max_tokens=200
)
text = llm.invoke("请给我写一个情人节红玫瑰的中文宣传语")
print(text)
这段代码很简单,就是调用 OpenAI 的 gpt-3.5-turbo-instruct 模型,让它帮我们写一句情人节玫瑰花的宣传语。 跑一下,你会发现,AI 还是挺会说话的! 🌹
2. ChatOpenAI:和风水大师聊聊花店名字
# 导入内置 操作系统模块
import os
# 环境变量
os.environ["OPENAI_API_KEY"] = "你的API密钥" # 替换成你的 API 密钥
os.environ["OPENAI_BASE_URL"] = "https://api.302.ai/v1" # 替换成你的 API 地址
from langchain_openai import ChatOpenAI
from langchain.schema import (
SystemMessage,
HumanMessage
)
chat = ChatOpenAI(
model="gpt-3.5-turbo",
temperature=0.8,
max_tokens=60
)
messages = [
SystemMessage(content="你是一个很棒的风水师"),
HumanMessage(content="请给我的花店起一个名字"),
]
response = chat(messages)
print(response)
print(response.content)
这段代码,我们用
ChatOpenAI 来模拟对话,让 AI 化身风水大师,帮我们的花店起个名字。 别看代码简单,用上 SystemMessage 和 HumanMessage 后,对话的 “角色感” 就出来了。
3. PromptTemplate 初体验:生成鲜花文案
import os
os.environ["OPENAI_API_KEY"] = "你的API密钥" # 替换成你的 API 密钥
os.environ["OPENAI_BASE_URL"] = "https://api.302.ai/v1" # 替换成你的 API 地址
from langchain.prompts import PromptTemplate
from langchain_openai import OpenAI
template = """
你是一位专业的鲜花店文案撰写员。\n
对于售价为 {price} 元的 {flower_name},你能提供一个
吸引人的简短描述吗\n
"""
prompt = PromptTemplate.from_template(template)
print(prompt)
input = prompt.format(flower_name="玫瑰",price="99")
print(input)
model = OpenAI(model_name='gpt-3.5-turbo-instruct')
output = model.invoke(input)
print(output)
这段代码展示了 PromptTemplate 的用法。我们定义了一个模板,然后用 format 方法往里 “填空”,再用 OpenAI 生成文案。是不是很简单?
结果:
4. StructuredOutputParser:让 AI 输出 “结构化数据”
import os
os.environ["OPENAI_API_KEY"] = "你的API密钥" # 替换成你的 API 密钥
os.environ["OPENAI_BASE_URL"] = "https://api.302.ai/v1" # 替换成你的 API 地址
from langchain.prompts import PromptTemplate
from langchain_openai import OpenAI
from langchain.output_parsers import StructuredOutputParser,ResponseSchema
template =
"""
你是一位专业的鲜花店文案撰写员。\n
对于售价为 {price} 元的 {flower_name},你能提供一个
吸引人的简短描述吗\n
{format_instructions}
"""
response_schemas =[
ResponseSchema(name="description",description="鲜花的描述文案"),
ResponseSchema(name="reason",description="为什么要这样写这个文案"),
]
output_parse = StructuredOutputParser.from_response_schemas(
response_schemas
)
print(output_parse)
format_instructions = output_parse.get_format_instructions()
print(format_instructions)
prompt = PromptTemplate.from_template(
template,
partial_variables={"format_instructions":format_instructions}
)
input = prompt.format(flower_name="玫瑰",price="99")
print(input)
model = OpenAI(model_name="gpt-3.5-turbo-instruct")
output = model.invoke(input)
print(output)
这段就是我们将要填写格式需求的地方。
格式化后的nmput:
这段代码更进一步,使用了 StructuredOutputParser,它可以让 AI 输出结构化的数据,比如 JSON 格式。这样我们就能更方便地处理 AI 的输出结果。

但是我们可以看到
out.reason还是得不到json数组的,只是能生成一个类似的字符串。
总结:LangChain,AI 开发的新宠!
看完这篇“接地气”的 LangChain 教程,你是不是觉得 AI 开发也没那么难? LangChain 的强大之处就在于它降低了 AI 开发的门槛,让我们可以像搭乐高一样,用各种模块组合出自己的 AI 应用。
如果你也想加入 AI 开发的大军,不妨试试 LangChain 吧,相信它会给你带来不一样的体验! 🚀
最后,别忘了给我点个赞哦!👍 如果有任何问题,也欢迎在评论区留言! 咱们一起在 AI 的世界里遨游! 🌊