当前位置: 首页 > ai >正文

LangChain + LangSmith + DeepSeek 入门实战:构建代码生成助手

本文基于 Jupyter Notebook 实践代码,结合 LangChain、LangSmith 和 DeepSeek 大模型,手把手演示如何构建一个代码生成助手,并实现全流程追踪与优化。


一、环境准备与配置

1. 安装依赖

pip install langchain langchain_openai

2. 设置环境变量(Jupyter 中运行)

请注意,LangSmith 不是必需的,但它很有帮助。如果您确实想使用 LangSmith,请在LangSmith注册后,确保设置环境变量以开始记录跟踪。当我们使用 LLM 构建 AI 智能体应用程序时,LangSmith 可以帮助你理解和改进它们。它就像一个仪表板,显示应用程序内部发生的情况。
在这里插入图片描述

# 启用 LangSmith 跟踪
true=True
LANGSMITH_TRACING=true
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY="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"
LANGSMITH_PROJECT="pr-untimely-house-95"# 配置 DeepSeek API
os.environ["DEEPSEEK_API_KEY"] = "sk-e3f022d1746f415c9b0f4bc9a52a4xxx"  # todo 调整为自己的api_key

二、集成 DeepSeek 大模型

1. 初始化模型客户端

from langchain_openai import ChatOpenAIllm = ChatOpenAI(model="deepseek-chat",api_key=os.getenv("DEEPSEEK_API_KEY"),temperature=0.7,max_tokens=512,timeout=30,max_retries=3,base_url="https://api.deepseek.com"
)# 测试调用
llm.invoke("hello world")

输出示例
在这里插入图片描述


三、构建提示模板系统

1. 定义结构化提示模板

from langchain_core.prompts import ChatPromptTemplatesystem_template = "将以下用户输入的信息转化为{language}代码"
prompt_template = ChatPromptTemplate.from_messages([("system", system_template), ("user", "{text}")]
)

在这里插入图片描述
在这里插入图片描述

2. 生成具体提示内容

输出示例

Content: 将以下用户输入的信息转化为python代码
Content: 请帮我写一个冒泡算法

3. 转换为消息格式

prompt.to_messages()

输出示例


四、执行链式调用与结果生成

1. 调用 DeepSeek 生成代码

response = llm.invoke(prompt)
print(response.content)

输出示例(模型生成结果)

在这里插入图片描述


五、LangSmith 全流程监控

1. 自动追踪功能

  • 所有调用链(Prompt → LLM → Output)将自动上传至 LangSmith 仪表板
  • 可查看:
    • 调用树状结构
    • 每个步骤耗时
    • Token 消耗统计
    • 中间输出结果

2. 项目管理

  • 所有运行记录归类到 pr-untimely-house-95 项目
  • 支持版本对比、性能分析和团队协作

完整代码与调试日志已通过 LangSmith 实现全流程追踪,您可以通过 LangSmith 仪表板 查看详细分析报告。

http://www.xdnf.cn/news/12952.html

相关文章:

  • 深入理解 React 样式方案
  • VRRP(虚拟路由冗余协议)深度解析
  • 循环语句之while
  • Netty自定义协议解析
  • R语言速释制剂QBD解决方案之一
  • vue3 daterange正则踩坑
  • c++第七天--继承与派生
  • 最好的无线麦克风是那款?2025硬核测评西圣和飞利浦无线领夹麦克风
  • 电子电气架构 --- E/E架构战略
  • 【高性能计算】java连接slurm提交作业,展示作业队列等
  • 【大厂机试题解法笔记】矩阵匹配
  • 电脑插入多块移动硬盘后经常出现卡顿和蓝屏
  • 基于算法竞赛的c++编程(26)指针的高阶用法
  • 基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
  • VSCode 没有添加Windows右键菜单
  • Mac如何配置ZSH并使用Oh-my-zsh?让你的终端更加实用、美观
  • QT开发技术【ffmpeg EVideo录屏软件 一】
  • 多模态学习路线(2)——DL基础系列
  • 【系统架构设计师-2025上半年真题】综合知识-参考答案及部分详解(回忆版)
  • 微服务商城-商品微服务
  • CSS标题下划线动态进入和移开
  • 【春秋云镜】CVE-2023-2130漏洞复现exp
  • 【大模型:知识库管理】--Dify接入RAGFlow 知识库
  • 生命之光-中小企实战运营和营销工作室博客
  • AI智能体终结运维“狼来了“
  • 解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
  • Java数组Arrays操作全攻略
  • 设计模式-状态模式
  • 从零手写Java版本的LSM Tree (二):KeyValue 数据结构
  • Angular微前端架构:Module Federation + ngx-build-plus (Webpack)