大数跨境

转型 AI 必看——LangChain 实战第三课:原生 API 写对话太累?用 LangChain 秒变清爽高手!

转型 AI 必看——LangChain 实战第三课:原生 API 写对话太累?用 LangChain 秒变清爽高手! 玩AI的方可乐
2025-09-18
0
导读:手把手教学,10 分钟见结果

 

你好,我是方可乐。
一个正在深耕AI编程的30+的AI应用开发工程师。
用AI编程开发过Web应用网站,浏览器插件,

微信小程序,AI智能体,RAG系统。

注公众号&添加微信:ThinkFun666

领取【AI编程资料包】



 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

去年6月份,我做了一个连自己都觉得疯狂的决定:裸辞,All in AI。

现在已经换赛道成功,继续在工作中探索。


 

昨天我们讲了怎么在命令行里面,和 AI 持续对话。
 一些眼尖的同学已经开始思考了:
为什么 LangChain 封装了 HumanMessage、AIMessage、SystemMessage?

其实这三个东西,恰恰就是我们和 AI 沟通的提示词核心。

  • • HumanMessage,代表用户说了什么。
  • • AIMessage,代表 AI 回答过什么。
  • • SystemMessage,代表我们给 AI 下的背景设定。

如果你用过原生 API,就会发现它们本质上就是
role = "user"role = "assistant"role = "system"

只是 LangChain 做了一层封装,让写法更直观。

为什么要有这层封装?

因为一旦对话变长,光靠 "role": "user" 这种写法,眼睛很容易花。

但如果换成 HumanMessage / AIMessage / SystemMessage

一眼就能分清楚谁说了什么,哪段是设定,哪段是回答。

像我有点点代码洁癖,看到这种封装得很统一的格式,就觉得很“优雅”。

至少在视觉上,给人不错的阅读体验。

下面,老规矩,给大家看看原生版本和langchain版本的区别。

今天的代码和昨天的其实差不多的。

原生版本,新建文件03_chat_message.py


           
           
           
           
            
           
           
           
           import os
from
 openai import OpenAI
from
 dotenv import load_dotenv

load_dotenv()
client = OpenAI(api_key=os.getenv("deepseek_api_key"), base_url="https://api.deepseek.com/v1")

# 系统设定

messages = [
    {"role": "system", "content": "你是一个 AI 助手"}
]

while
 True:
    user_input = input("你:")
    if
 user_input.lower() in ["exit", "quit", "退出"]:
        break


    # 用户发言

    messages.append({"role": "user", "content": user_input})

    # 调用大模型

    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=messages
    )

    ai_reply = response.choices[0].message.content
    print
("AI:", ai_reply)

    # AI 回答

    messages.append({"role": "assistant", "content": ai_reply})

langchain版本,新建文件03_chat_message_langchain.py


           
           
           
           
            
           
           
           
           import os
from
 langchain_openai import ChatOpenAI
from
 langchain.schema import HumanMessage, AIMessage, SystemMessage
from
 dotenv import load_dotenv

load_dotenv()

llm = ChatOpenAI(
    api_key=os.getenv("deepseek_api_key"),
    base_url="https://api.deepseek.com/v1",
    model="deepseek-chat",
    temperature=0.7
)

# 系统设定

messages = [SystemMessage(content="你是一个 AI 助手")]

while
 True:
    user_input = input("你:")
    if
 user_input.lower() in ["exit", "quit", "退出"]:
        break


    # 用户发言 → HumanMessage

    messages.append(HumanMessage(content=user_input))

    # 调用大模型

    response = llm.invoke(messages)
    print
("AI:", response.content)

    # AI 回答 → AIMessage

    messages.append(AIMessage(content=response.content))

虽然现在功能比较简单,代码行数看着差不多,但是langchain这个写法在后面有大用。

特别是在做记忆管理和RAG的时候,更加高效。

而且,原生写法靠 "role",读起来很累。

LangChain 封装了 Human / AI / SystemMessage。 代码一眼就能分清身份,谁提供了什么提示词。

 


对AI应用开发感兴趣的同学,欢迎加微信申请入群交流学习。

想要学习AI应用开发的同学,可以参照我的代码跑起来,举一反三,一天一个脚印的进步,我相信,会足够坚实。


接下来100天,我会记录从Java程序员到AI应用开发工程师的完整转型路:每一个困惑、每一次突破、每一个真实瞬间。

当前是22/100。

如果你也想了解AI应用开发到底是什么,如果你也在考虑转型但还在犹豫,
那就跟着我的记录,一起探索。


继续折腾中,有问题随时交流 🤝
微信号:ThinkFun666



我的免费AI编程交流群,欢迎加入讨论AI编程玩法(加我微信,说明需求和来意,申请入群)




 


不懂编程的小白,如何入门AI编程和商业化?

如何系统地掌握这些方法?如何找到有价值的商业化方向?如何在遇到瓶颈时获得启发和帮助?

如果你也对AI编程充满热情,渴望用AI创造出属于自己的应用并探索商业化机会;如果你想提升在AI时代的核心竞争力,让AI成为你事业的加速器。

那么,我非常推荐你加入“AI编程复利商业化星球”!




在这个社群,你将获得:

  • 9次价值千元的AI编程死磕实战训练营

  • 超级大佬的实战经验分享,商业化思路,前沿AI工具和技巧

  • 和一群积极的AI编程同行者共舞


让我们一起,用AI编程,不仅创造工具,更创造价值,实现个人和商业上的持续“进化”与“复利”!

 

 

 



推荐阅读:

我就喜欢干这种傻事!为什么转型AI应用开发,我不建议你直接从看书开始学起?

猛然醒悟:原来 AI 编程这件事情,是有门槛的,90%的新手卡在这些地方

30岁转行 AI 应用开发:多久能学会?答案出乎意料

30岁,我放弃写了7年的Java,成功转型AI应用开发

30岁,转型AI应用开发,需要会什么技术?

30岁,空窗期一年,靠什么成功转型AI应用开发?

30岁,没报课,如何从0自学转型AI应用开发?

【声明】内容源于网络
0
0
玩AI的方可乐
1234
内容 502
粉丝 0
玩AI的方可乐 1234
总阅读204
粉丝0
内容502