大数跨境

转型 AI 应用开发——LangChain 实战第二课:手把手搭建命令行 AI 聊天

转型 AI 应用开发——LangChain 实战第二课:手把手搭建命令行 AI 聊天 玩AI的方可乐
2025-09-17
4
导读:手把手教学,10 分钟见结果

 

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

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

注公众号&添加微信:ThinkFun666

领取【AI编程资料包】



 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

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

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


今天我们来聊聊,用langchain调用大模型,如何持续实时交互。

 

昨天我们跑通了第一次调用,输出就像“演示版”,一问一答,但一次性结束。今天,我们来进行连续的对话


就像我们平时用豆包或者DeepSeek这些AI 聊天一样,持续提问,随问随答。

在昨天原来的目录上,我们新建两个文件。老规矩,一个原生版本,一个langchain版本。

原生版本,新建文件02_talk_with_deepseek.py


           
           
           
           
            
           
           
           
           from openai import OpenAI
from
 dotenv import load_dotenv
import
 os

# 加载环境变量

load_dotenv()

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

print
("=== 欢迎进入 AI 命令行聊天 ===")
print
("输入 'exit' 退出聊天")

# 初始化对话历史,只包含系统消息

messages = [
    {"role": "system", "content": "你是一个聪明的 AI 助手,会回答用户的问题。"}
]

while
 True:
    user_input = input("\n你:")
    if
 user_input.lower() == "exit":
        print
("聊天结束,再见!")
        break


    # 添加用户消息到对话历史

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

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

    answer = response.choices[0].message.content
    # 添加AI回复到对话历史

    messages.append({"role": "assistant", "content": answer})
    print
(f"AI:{answer}")

langchain版本,新建文件02_talk_with_deepseek_langchain.py


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

# 加载 .env 文件

load_dotenv()

# 初始化 LangChain LLM

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

print
("=== 欢迎进入 LangChain AI 命令行聊天 ===")
print
("输入 'exit' 退出聊天")

# 初始化对话历史,只包含系统消息

messages = [
    SystemMessage(content="你是一个聪明的 AI 助手,会回答用户的问题。")
]

while
 True:
    user_input = input("\n你:")
    if
 user_input.lower() == "exit":
        print
("聊天结束,再见!")
        break


    # 添加用户消息到对话历史

    messages.append(HumanMessage(content=user_input))

    response = llm.invoke(messages)
    # 添加AI回复到对话历史

    messages.append(response)
    print
(f"AI:{response.content}")

我们使用while True来激活一个循环,然后通过input("\n你:")来进行连续的输入。

通过在循环中持续填入增量的历史消息到message对象后调用大模型,并且打印大模型的回复,来达到持续交互的目的。

Langchain中使用 messages.append(HumanMessage(content=user_input)),用HumanMessage对象来包装用户输入,看起来更加整洁。

当我们的代码复杂后,有更高的可读性。

这是最终代码运行效果,是不是很简单就跑起来了?

 


 

 


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

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


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

当前是21/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