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

RAG开发

LangChain通用提示词模板from langchain_core.prompts import PromptTemplate from langchain_community.llms import Tongyi prompt_template PromptTemplate.from_template( 我的邻居姓{lastname},刚生了{gender} ) prompt_template.format(lastname 张,gender 男) model Tongyi(model qwen-max) res model.invoke(input prompt_template) print(res)链式写法from langchain_core.prompts import PromptTemplate from langchain_community.llms import Tongyi prompt_template PromptTemplate.from_template( 我的邻居姓{lastname},刚生了{gender} ) model Tongyi(models qwen-max) chain prompt_template | model reschain.invoke(input{lastname:张,gender:男}) print(res)FewShot提示词模板from langchain_core.prompts import PromptTemplate,FewShotPromptTemplate from langchain_community.llms.tongyi import Tongyi example_template PromptTemplate.from_template( 单词:{word},反义词:{antonym} ) example_data [ {word:大,antonym:小}, {word:上,antonym:下} ] few_shot_template FewShotPromptTemplate( example_promptexample_template, #示例数据模板 examples example_data, #示例的数据 prefix 告知我单词的反义词,我提供如下的示例, #示例之前的提示词 suffix 基于前面的示例告诉我,{input_word}的反义词是, #示例之后的提示词 input_variables [input_word] #声明在前缀或后缀中所需注入的变量名 ) prompt_text few_shot_template.invoke(input{input_word:左}).to_string() print(prompt_text)在PromptTemplate(通用提示词模板)和FewShotPromptTemplate(FewShot提示词模板)的使用我们使用了如下模板对象的format方法模板对象的invoke方法PromptTemplateFewShotPromptTemplate,ChatPromptTemplate(后续学习)都拥有format和invoke这2类方法format和invoke的区别在于ChatPromptTemplate:通过from_messages方法从列表中获取多轮次会话作为聊天的基础模板前面PromptTemplate类用的from_template仅能接入一条消息,而from_messages可以接入一个list消息from langchain_core.prompts import ChatPromptTemplate,MessagesPlaceholder from langchain_community.chat_models.tongyi import ChatTongyi chat_prompt_template ChatPromptTemplate.from_messages( [ (system,你是一个边塞诗人), MessagesPlaceholder(history), (human,请再来一首) ] ) history_data [ (human,你来写一个唐诗), (ai,川黔) ] prompt_text chat_prompt_template.invoke({history:history_data}).to_string()链LangChain中链是一种将各个组件串联在一起按顺序执行前一个组件的输出作为下一组件的输入可以通过“|”符号来让各个组件形成链成链的各个组件需是Runnable接口的子类形成的链式RunnableSerializable对象(Runnabl接口子类)可通过链调用invoke或stream触发整个链条的执行错误的主要原因是chain prompt | model | model错误的主要原因是prompt的结果是PromptValue类型输入给了modelmodel 的输出结果是 AIMessage模型(ChatTongyi)源码中关于invoke方法明确指定了input的类型StrOutputParser也是Runnable接口的子类StrOutputParser字符串输出解析器是LangChain内置的简单字符串解析器parser StrOutputParser()chain prompt | model |parser | modelparser将上一个模型AIMessage结果解析为简单字符串然后就能继续下去了提示词模板要求的是字典类型所以我们需要完成将模型输出的AIMessage - 转为词典-注入第二个提示词模板中形成新的提示词StrOutputParser不满足(AIMessage-Str)更换JsonOutputParser(AIMseaage-Dict)1. 模型输入 PromptValue或字符串或序列(BaseMessage,list,tuple,str,dict)2. 模型输出 AIMessage3. 提示词模板输入 要求是字典4. 提示词模板输出 PromptValue对象5. StrOutputParser: AIMsaage输入str输出6. JsonOutputParser: AIMessage输入dict输出自定义类型转换器除了JsonOutputParser这类固定功能的解析器外我们也可以自己编写Lambda匿名函数来完成自定义逻辑的数据转换想怎么换就怎吗换可以基于RunnableLambda类实现另外|符号是支持函数直接加入链的支持Callable接口实例(函数就是Callable接口实例)

相关文章:

RAG开发

LangChain通用提示词模板:from langchain_core.prompts import PromptTemplate from langchain_community.llms import Tongyiprompt_template PromptTemplate.from_template("我的邻居姓{lastname},刚生了{gender}" )prompt_template.format(lastname …...

Android NDK开发从入门到实战:解锁应用性能的终极武器

引言 在Android应用开发领域,Java和Kotlin凭借其简洁的语法和强大的框架支持,成为了绝大多数开发者的首选。然而,当面对高性能计算、游戏引擎集成、硬件加速访问或核心算法保护等场景时,纯Java层的实现往往显得力不从心。这时&…...

【Linux信号】Linux进程信号(上):信号产生方式和闹钟

🎬 个人主页:艾莉丝努力练剑❄专栏传送门:《C语言》《数据结构与算法》《C/C干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》⭐️为天地立心,为生民立命…...

革新性PDF打印解决方案:PDFtoPrinter全场景应用指南

革新性PDF打印解决方案:PDFtoPrinter全场景应用指南 【免费下载链接】PDFtoPrinter .Net Wrapper over PDFtoPrinter util allows to print PDF files. 项目地址: https://gitcode.com/gh_mirrors/pd/PDFtoPrinter 价值定位:重新定义PDF打印体验…...

二次开发入门:修改nanobot镜像适配我的OpenClaw需求

二次开发入门:修改nanobot镜像适配我的OpenClaw需求 1. 为什么需要定制nanobot镜像 第一次接触OpenClaw时,我直接使用了官方提供的标准镜像。但在实际使用中,发现几个痛点:默认的chainlit界面过于简单,无法展示我需要…...

搭建专属汽车电子测试 AI 助手

专栏:《AI 汽车电子测试实战》第 15 篇 作者:一线汽车电子测试工程师 适合人群:想搭建私有 AI 助手的测试团队、关注数据安全的工程师开篇:为什么需要专属 AI 助手? 这是我上个月在某车企的 AI 部署项目中的真实经历。…...

收藏!AI大模型产品经理学习路线(2026最新),从零基础到专家,收藏这一篇就够

一、AI产品经理和和通用型产品经理的异同: 市面上不同的公司对产品经理的定位有很大的差别,一名合格的产品经理是能对软件产品整个生命周期负责的人。 思考框架相同: AI产品经理和通用型软件产品经理的底层思考框架是一样的,都是…...

进阶篇第5节:共享内存(三)——实战:优化矩阵乘法(Tiling技术)

第二篇进阶篇第5节:共享内存(三)——实战:优化矩阵乘法(Tiling技术) 从朴素到分块,从分块到极致——矩阵乘法的优化之路,就是CUDA性能优化的缩影 写在前面 矩阵乘法是CUDA优化中最经典的案例,没有之一。在筑基篇,我们实现了朴素版本和基础分块版本,性能从 252 GFLO…...

Agent Skill 从使用到原理,一次讲清

目录前言1. 本期内容概览2. Agent Skill 是什么3. Agent Skill 的基本用法4. 高级用法(Reference)5. 高级用法(Script)6. 渐进式披露机制7. Agent Skill vs MCP结语参考前言 学习 UP 主 马克的技术工作坊 的 Agent Skill 从使用到…...

OpenClaw常用命令与在Windows下安装Tavily-Search

目录1. Windows安装Tavily-Search2. 启动与关闭2.1 正常流程2.2 故障处理3. 模型切换1. Windows安装Tavily-Search 确保目录位于C:\Users\用户名运行命令npx clawhub install openclaw-tavily-search在C:\Users\用户名\.openclaw创建文件.env用记事本打开.env,写入…...

SAP Fiori Launchpad 中 Spaces 与 Pages 的传输机制:从对象关系到项目落地的完整实践

在很多 SAP Fiori 项目里,团队把精力放在了应用开发、业务角色设计、SAPUI5 组件装配,或者 Fiori Elements 的元数据驱动页面构建上,却常常低估了一个看似普通、实际上极易影响上线结果的环节:Spaces 与 Pages 的传输。 这个主题之所以重要,不是因为操作本身复杂,而是因…...

3步精通FanControl:从噪音难题到智能散热的技术蜕变

3步精通FanControl:从噪音难题到智能散热的技术蜕变 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/F…...

OpenClaw性能优化:降低GLM-4.7-Flash任务Token消耗的5个技巧

OpenClaw性能优化:降低GLM-4.7-Flash任务Token消耗的5个技巧 1. 为什么需要关注Token消耗 当我第一次在本地部署OpenClaw并接入GLM-4.7-Flash模型时,最让我震惊的不是它的自动化能力,而是执行简单任务后查看账单时的Token消耗数字。一个看似…...

OpenClaw故障自愈方案:Qwen3-32B镜像异常重启监控

OpenClaw故障自愈方案:Qwen3-32B镜像异常重启监控 1. 问题背景与解决思路 上周我的OpenClaw自动化助手突然"罢工"了——原本应该定时执行的日报生成任务没有按时完成。排查后发现是底层Qwen3-32B模型服务因OOM异常退出。这种情况在长期运行的AI服务中并…...

5步掌握抖音音乐批量下载:douyin-downloader高效使用指南

5步掌握抖音音乐批量下载:douyin-downloader高效使用指南 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容创作的浪潮中,背景音乐已成为视频作品的灵魂元素。然而&#xff0…...

string字符串基础相关知识

课程要求1.string的三种创建方式2.string常用方法空格处理,空值判断,替换操作,字符串截取,字符串拆分,字符索引访问拼接与性能,删除操作3.理解 string 不可变性,能在循环拼接场景中使用 StringB…...

ISIS实验1

ISIS实验1网络拓扑配置一、AR1二、AR2三、测试1. 查看 IS-IS 邻居状态2. 查看 IS-IS 接口信息3. 查看 IS-IS 路由表4. 查看 IP 路由表中的 IS-IS 路由5. 查看链路状态数据库(LSDB)6. 检查:Level-1 区域一致性四、AR3五、AR4六、检测1. 通过链…...

hot100——二分查找

4.寻找两个正序数组的中位数解题思路首先,题目中已经说明,是正序,那么nums1以及nums2中都是从小到大进行排列的;又因为题目中要求时间复杂度为O(log(mn)),一般看到这种时间复杂度是O(log……)形式的,基本上…...

屠龙刀法35--使用SQL查询器批量生成insert语句

很多网友认为SQL查询器的语句不都是人工输入或者从外面粘贴进去的吗?用查询器批量生成Insert语句感觉有点魔幻哦。的确听起来不太科学,但是对于DBCS来说这个功能的确非常好用。下面我们就举例一步步告诉大家,如何使用这个功能。 第一步&…...

微信JS-SDK分享失败?深度解析“offline verifying”权限验证错误与高效排查指南

还在为微信网页自定义分享功能频繁遭遇“updateAppMessageShareData:fail, the permission value is offline verifying”而头疼?本文将从公众号认证、JS-SDK权限、域名绑定、网络、缓存及API版本六大维度,为您深度剖析此错误成因,并提供一套…...

Wan2.2-I2V-A14B开源大模型:支持ONNX导出与边缘设备轻量化部署探索

Wan2.2-I2V-A14B开源大模型:支持ONNX导出与边缘设备轻量化部署探索 1. 开箱即用的私有部署方案 Wan2.2-I2V-A14B是一款强大的文生视频开源大模型,专为RTX 4090D 24GB显存环境深度优化。这个私有部署镜像已经内置了完整的运行环境和所有必要组件&#x…...

基于MATLAB的VSG逆变器无源性分析与稳定性研究

基于MATLAB的VSG逆变器无源性分析与稳定性研究 摘要 随着分布式发电和微电网技术的快速发展,逆变器作为新能源并网的关键接口,其稳定性问题日益突出。虚拟同步发电机(VSG)控制技术通过模拟同步发电机的机电特性,为逆变器提供惯性和阻尼支撑,成为提升系统稳定性的重要手…...

EdB Prepare Carefully:定制你的RimWorld完美开局体验

EdB Prepare Carefully:定制你的RimWorld完美开局体验 【免费下载链接】EdBPrepareCarefully EdB Prepare Carefully, a RimWorld mod 项目地址: https://gitcode.com/gh_mirrors/ed/EdBPrepareCarefully 是否厌倦了RimWorld随机生成的殖民者团队带来的不确定…...

3种策略实现百度网盘提取码智能解析效率提升85%

3种策略实现百度网盘提取码智能解析效率提升85% 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 副标题:分布式检索技术突破与资源获取效率革命 核心痛点:为何获取提取码成为数字资源流通的主要瓶颈&am…...

COMSOL数值模拟:N2和CO2混合气体在THM热流固三场耦合下增强瓦斯抽采

COMSOL数值模拟,实现N2和CO2混合气体在THM热流固三场耦合情况下增强瓦斯(煤层气抽采)煤层气抽采效率提升这事儿,最近在实验室搞了个骚操作——往煤层里怼氮气和二氧化碳的混合气。说人话就是拿这俩气体当开塞露,把卡在…...

测试用例设计-XMind

🚀 一、XMind 用例设计核心思路👉 和传统Excel不同,XMind强调:以“功能模块”为主干 以“用户场景”为分支 以“测试点”为叶子节点👉 本质结构:模块 → 场景 → 用例点 → 具体测试数据/预期📌…...

不换硬件,速度翻倍:本地 LLM 推理加速实战

同一块 RTX 3090,同一个 70B 模型,推理速度从 30 t/s 提升到 160 t/s,并且不花一分钱。作者 Amar Chetri 博士在这篇文章中介绍了三种纯软件优化技术:speculative decoding、multi-token prediction 和自动化超参数调优&#xff0…...

QRazyBox:5分钟解决二维码修复难题的专业工具

QRazyBox:5分钟解决二维码修复难题的专业工具 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 二维码已经成为现代生活中无处不在的数字桥梁,但你是否遇到过这样的情况&…...

SEO_2024年最新SEO策略与趋势深度解析(352 )

<h2>2024年最新SEO策略与趋势深度解析</h2> <p>在数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;依然是网站流量和品牌影响力的核心驱动力。2024年&#xff0c;随着互联网技术的不断进步&#xff0c;SEO策略和趋势也在不断演变。本文将详细…...

探索粗糙表面波动模型生成:打造不规则之美

粗糙表面&#xff0c;波动模型生成&#xff0c;用于在物体表面生成不规则的粗糙表面&#xff0c;或面表面的波动边界等&#xff0c;可自定义波动分布与赋值。在图形学和模拟领域&#xff0c;生成物体表面的粗糙质感或是波动边界常常是一个有趣又具有挑战性的任务。今天咱们就聊…...