初探大模型开发:使用 LangChain 和 DeepSeek 构建简单 Demo

最近,我开始接触大模型开发,并尝试使用 LangChainDeepSeek 构建了一个简单的 Demo。通过这个 Demo,我不仅加深了对大模型的理解,还体验到了 LangChain 和 DeepSeek 的强大功能。下面,我将分享我的开发过程以及一些心得体会。


1. 什么是 LangChain?

LangChain 是一个用于构建大模型应用的框架,旨在简化与大模型(如 GPT、DeepSeek 等)的交互过程。它提供了丰富的工具和模块,帮助开发者快速构建基于大模型的应用程序,例如聊天机器人、问答系统、文本生成工具等。LangChain 的核心优势在于其灵活性和可扩展性,开发者可以轻松地将不同的模型、数据源和工具链结合在一起,构建复杂的应用。

LangChain 的主要功能包括:

  • Prompt 管理:支持动态生成和模板化提示词(Prompt),方便与大模型交互。
  • 链式调用:可以将多个任务串联起来,形成复杂的工作流。
  • 数据集成:支持与外部数据源(如数据库、API)集成,增强模型的能力。
  • 记忆功能:支持会话记忆,使模型能够在多轮对话中保持上下文。

通过 LangChain,开发者可以更高效地利用大模型的能力,而无需关注底层的复杂细节。


2. 环境准备

在开始之前,我们需要安装必要的 Python 库。以下是安装命令:

pip3 install langchain-core langchain-openai

这里我们使用 pip3 来确保安装的是 Python 3 版本的库。


3. 配置 DeepSeek API 密钥

为了使用 DeepSeek 的 API,我们需要获取并配置 API 密钥。将你的 DeepSeek API 密钥设置为环境变量:

import osos.environ["DEEPSEEK_API_KEY"] = "your_deepseek_api_key"

这里需要自己去申请一个API Key (申请入口),deepSeek的目前没有免费的了,需要自己充值,我充了10块,完全够用。


4. 创建 LangChain 应用

接下来,我们使用 LangChain 和 DeepSeek 构建一个简单的对话应用。代码如下:

from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
import osos.environ["DEEPSEEK_API_KEY"] = "your_deepseek_api_key"# 配置 DeepSeek 模型
llm = ChatOpenAI(model_name="deepseek-chat",  # 使用 DeepSeek 的模型名称openai_api_key=os.getenv("DEEPSEEK_API_KEY"),openai_api_base="https://api.deepseek.com/v1"  # DeepSeek 的 API 地址
)# 创建对话模板
prompt = ChatPromptTemplate.from_messages([("system", "你是世界级技术专家"),("user", "{input}")
])# 构建对话链
chain = prompt | llm# 调用模型并获取结果
result = chain.invoke({"input": "请评价 Swift 这门语言,200 个字以内"})# 输出结果
print(result.content)

5. 运行结果

运行上述代码后,模型会生成一段对 Swift 语言的评价。以下是我得到的输出结果:

Swift 是一门现代、安全且高效的编程语言,由苹果公司开发,主要用于 iOS、macOS
等平台的应用开发。其语法简洁清晰,支持类型推断和可选类型,减少了常见编程错误。Swift 具备强大的性能,接近 C
语言的运行速度,同时支持面向对象和函数式编程范式。其内存管理采用自动引用计数(ARC),简化了内存管理。Swift
还拥有丰富的标准库和活跃的社区支持,开发者可以快速构建高性能应用。总体而言,Swift 是一门适合现代应用开发的优秀语言。

请添加图片描述


6. 总结

LangChain 提供了简洁的接口和灵活的框架,使得构建大模型应用变得非常容易。而 DeepSeek 的模型则表现出了极高的语言理解和生成能力,能够生成高质量的内容。

如果你也对大模型开发感兴趣,不妨从这个小 Demo 开始,逐步深入学习和实践。

希望这篇博客对你有所帮助,欢迎在评论区分享你的想法和经验!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33853.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于RWA 与 AI-Agent 协同的企业数字化生态构建

在当前数字经济高速发展的背景下,企业数字化转型已成为提升竞争力和创新能力的必由之路。以实体零售与文旅行业为代表的传统产业,正通过现实世界资产(RWA)数字化与人工智能代理(AI-Agent)的协同应用&#x…

专题地图的立体表达-基于QGIS和PPT的“千层饼”视图制作实践

目录 前言 一、QGIS准备基础数据 1、QGIS 相关插件 2、图层标绘操作 二、PPT中制作 1、调整图片的规格 2、设置旋转 3、添加文字 三、总结 前言 在信息爆炸的时代,数据的可视化呈现变得愈发关键,而专题地图作为传递地理空间信息的有力工具&#…

3D文物线上展览如何实现?

3D文物线上展览的实现主要依赖于一系列先进的数字技术和创新手段,以下是实现3D文物线上展览的关键步骤和技术要点: 一、文物数字化采集与建模 高精度扫描: 使用专业的3D扫描仪对文物进行高精度扫描,获取文物的三维数据。积木易…

SpringCloud 学习笔记1(Spring概述、工程搭建、注册中心、负载均衡、 SpringCloud LoadBalancer)

文章目录 SpringCloudSpringCloud 概述集群和分布式集群和分布式的区别和联系 微服务什么是微服务?分布式架构和微服务架构的区别微服务的优缺点?拆分微服务原则 什么是 SpringCloud ?核心功能与组件 工程搭建父项目的 pom 文件 注册中心Rest…

1140:验证子串--next.data()、KMP和find

1140:验证子串--KMP 题目 解析next.data()KMP代码Find代码 题目 解析 对于字符串的匹配常见的KMP算法【面试常考】 KMP中需要注意的是:应该从下标1开始遍历,因为下标0前面无值,不能匹配next 固在循环外应初始next[0]0;//易忘点 …

Python 实现大文件的高并发下载

项目背景 基于一个 scrapy-redis 搭建的分布式系统,所有item都通过重写 pipeline 存储到 redis 的 list 中。这里我通过代码演示如何基于线程池 协程实现对 item 的中文件下载。 Item 结构 目的是为了下载 item 中 attachments 保存的附件内容。 {"crawl_tim…

ubuntu中用docker下载opengauss

1.安装docker sudo apt install docker.io2.拉取opengauss镜像 sudo docker pull enmotech/opengauss3.创建容器 sudo docker run --name opengauss --privilegedtrue -d -e GS_PASSWORDEnmo123 enmotech/opengauss:latest3.5.如果容器停止运行(比如关机了&#…

从零基础到能独立设计单片机产品,一般需要经历哪些学习阶段?

相信很多人,内心都有“钢铁侠”的幻想,成为能写程序,能设计硬件,能设计结构,能焊接的全能型人才。 上次徐工问我,如果你财富自由了,想去做啥? 我说出来,可能大家都不信&a…

cursor中git提交记录出现 签出(已分离)

我当时在cursor中的git记录右键点击 签出(已分离) 就导致最左边的记录图标的颜色由蓝色变为了橙色 后面提交的记录都不在显示本地分支和远程分支 创建新分支:在您当前的分离HEAD状态下,创建一个新的分支来保存这些提交。 git checkout -b new-branch-nam…

软件测试之测试用例

1. 什么是测试用例 测试用例(TestCase)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。 设计测试⽤例原则⼀: 测试⽤例中⼀个必需部分是对预期输出或结果进⾏定义 使…

Unity2D 井字棋

Unity版本2022.3 场景布置 其中可以通过给Board对象添加Grid Layout Group,然后设置每个子物体所占宽高快速排整齐。用完删掉。每个落子的方格ChessBox都是一个Button。 根据Board的宽高除以三即可。 然后隐藏按钮,通过设置alpha值实现。 将ChessBox的…

专题三搜索插入位置

1.题目 题目分析: 给一个目标值,然后要在排序的整数数组中,找到跟目标值一样的,如果没有就把这个值插入进去,然后返回插入后的下标。 2.算法原理 根据题目的时间复杂度可以知道要用二分,开始划分区域&…

正式进入linux 1.0

切记:在Linux中空格很重要 回车键也很重要,不要按两次回车键 ls是显示当前所有文件夹 具体解释: 前面的东西是用户名 后面的是设备名(计算机名) 这是因为linux允许不同用户在终端下进行操作,这么做可以…

分页查询的实现

目录 前言 一.问题描述 二.后端实现步骤 2.1配置PageHelper插件 ①导入依赖 ②在application.yml配置文件中添加相关配置 2.2编写一个入门的程序,体验分页过程 2.3定义一个vo,用来收集分页后的所有信息 2.4修改serviceImpl层的代码 2.5动态设…

16003. orin camera 相机驱动源码 imx477分析记录

文章目录 1 背景2 原理图2.1 CAM_MUX_SEL 4 lane 选通2.2 J21 和 J20 原理图3 驱动源码及设备树3.1 子设备树 tegra234-p3768-camera-rbpcv3-imx477.dtsi3.2 顶层设备树 tegra234-camera-rbpcv3-imx477.dtsi3.2.1 tegra-capture-vi 视频输入子系统节点配置.3.2.2 host1x 主机控…

无标签数据增强+高效注意力GAN:基于CARLA的夜间车辆检测精度跃升

目录 一、摘要 二、引言 三、框架 四、方法 生成合成夜间数据 昼夜图像风格转换 针对夜间图像的无标签数据增强技术 五、Coovally AI模型训练与应用平台 六、实验 数据 图像风格转换 夜间车辆检测和分类 结论 论文题目:ENHANCING NIGHTTIME VEHICLE D…

开源工具利器:Mermaid助力知识图谱可视化与分享

在现代 web 开发中,可视化工具对于展示流程、结构和数据关系至关重要。Mermaid 是一款强大的 JavaScript 工具,它使用基于 Markdown 的语法来呈现可定制的图表、图表和可视化。对于展示流程、结构和数据关系至关重要。通过简单的文本描述,你可…

C++算法学习2:二分算法精讲

一、实数二分法回顾 1.1问题背景 在1~2的范围内找到一个x&#xff0c;使得式子5x2 -9x 1 的绝对值<10-9&#xff08;即无限接近0&#xff09; 要求&#xff1a;x精确到小数点后9位。 换句话说也就是求&#xff1a;就是求方程 5x2- 9x 1 0 在1~2内的近似解 1.2怎么找到…

手写一个简易版的tomcat

Tomcat 是一个广泛使用的开源 Servlet 容器&#xff0c;用于运行 Java Web 应用程序。深入理解 Tomcat 的工作原理对于 Java 开发者来说是非常有价值的。本文将带领大家手动实现一个简易版的 Tomcat&#xff0c;通过这个过程&#xff0c;我们可以更清晰地了解 Tomcat 是如何处理…

object.assign和扩展运算法是深拷贝还是浅拷贝,两者区别

object.assign和扩展运算法是深拷贝还是浅拷贝&#xff0c;两者区别 1. 浅拷贝的本质2. Object.assign 和扩展运算符的区别‌3. 具体场景对比‌合并多个对象‌‌复制数组‌‌处理默认值‌ ‌4. 如何实现深拷贝&#xff1f;JSON.parse(JSON.stringify(obj))‌‌递归深拷贝函数第…