码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 17. LangChain FewShotPromptTemplate少样本应用实战


    合集 - AI应用开发实战(32)
    1.1. AI应用实战开发04-292.2.【保姆级入门】什么是 AI?人工智能到底能干嘛?看完秒懂!04-293.3. AI大模型架构图和盈利模式04-304.4. Token(词元),5分钟彻底搞懂04-305.5. AI大模型的不足和解决方案04-306.6. LangChain,解决AI大模型的不足05-017.7. 搞懂LangChain开发库,还有dotenv实战05-028.8.【保姆级】从零学会LangChain调用大模型!统一接口+代码实战05-039.9. LangChain 6大核心参数详解 + 代码实战,看完就能直接用05-0410.10. LangChain开发核心技巧,动态切换AI大模型参数05-0511.11. LangChain实用技巧,轻松切换AI大模型05-0612.12. LangChain 6大核心调用方法:invoke/stream/batch同步异步全解析,新手也能轻松学会05-0713.13. 学会提示词,从此 AI 听你指挥05-0814.14. 别再硬写提示词了!LangChain PromptTemplate从入门到实战05-1215.15. 别再硬写提示词了!LangChain ChatPromptTemplate核心实战05-1516.16. LangChain ChatPromptTemplate多模态应用实战05-16
    17.17. LangChain FewShotPromptTemplate少样本应用实战05-17
    18.18. LangChain输出解析器实战:从大模型输出到结构化数据的转化05-1819.19. 大模型输出乱成渣?3个解析器轻松转成标准列表!05-1920.20. AI大模型输出转JSON,原来这么简单!05-2021.21. “|”不只是按位或,90%的人不知道05-2122.22. LangChain LCEL,用 | 串联AI的魔法语言05-2423.23. AI 智能体真的很难吗?5分钟一次性讲明白06-0124.24. LangChain内置工具,开发效率提升10倍!06-0325.25. AI 总是 “失忆“?3 行代码让它记住你!06-0626.26. Agent 记不住业务数据?用 Store 给它加个“笔记本“!06-1327.27. Agent 需要拦截模型调用?用 Middleware 给它加个“拦截器“!06-1428.28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!06-1829.29. MCP协议,让大模型自己调用工具06-2230.30. AI Skills技能系统,让 Agent 自动变强06-2431.31. RAG 检索增强生成,让大模型拥有外部知识07-0632.32. 从 LangChain 到实战落地:一条清晰的智能体技术进阶路径(完结篇)07-07
    收起

    做 AI 应用开发的人应该都有过这种经历:明明在提示词里写了一大堆要求,大模型还是会输出不符合预期的内容,甚至一本正经地胡说八道。这时候,与其继续堆砌文字说明,不如试试 LangChain 里的 FewShotPromptTemplate—— 用几个简单的示例,就能让大模型瞬间明白你想要什么。视频在这里《17. LangChain FewShotPromptTemplate 少样本应用实战》。

    image

     这个工具的底层逻辑是少样本学习,说白了就是让大模型先看几个正确的示范,再去处理新的任务。不管是翻译、文本分类还是逻辑推理,只要给对了例子,它的输出准确率和一致性都会有明显提升。

    image

     它的核心思想特别朴素:与其给 AI 写几百字的任务说明,不如直接扔给它两三个具体的例子。大模型对示例的理解能力,远比我们想象的要强得多。

    这里有个容易踩的坑:创建 FewShotPromptTemplate 的时候,examples 和 example_selector 这两个参数是互斥的,必须填其中一个,不然代码直接报错。绝大多数情况下,我们直接用 examples 参数把准备好的示例数据传进去就行。

    组件

    说明

    必填性

    示例

    example_selector

    动态选择示例的选择器

    二选一

    SemanticSimilarityExampleSelector

    examples

    示例数据列表,每个是字典

    二选一

    [{"input": "Hi", "output": "你好"}]

    example_prompt

    单个示例的格式化模板

    必填

    PromptTemplate.from_template(...)

    prefix

    示例前的引导文本

    可选,默认""

    "请把英文翻译成中文:"

    suffix

    示例后的用户输入提示

    必填

    "Input: {new_input}\nOutput:"

    input_variables

    用户输入变量列表

    必填

    ["new_input"]

    example_separator

    示例之间的分隔符

    默认\n\n

    "\n"

    先来看最基础的用法,针对文本补全模型,我们可以这样写:

    复制代码
    from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate
    # 准备示例数据
    examples = [
        {"input": "Hello", "output": "你好"},
        {"input": "Thank you", "output": "谢谢"},
        {"input": "Good morning", "output": "早上好"},
    ]
    # 定义示例的格式化模板
    example_prompt = PromptTemplate.from_template(
        "{input} -> {output}"
    )
    # 创建 FewShotPromptTemplate
    few_shot_prompt = FewShotPromptTemplate(
        examples=examples,
        example_prompt=example_prompt,
        prefix="请把以下英文翻译成中文:",
        suffix="{new_input} -> ",
        input_variables=["new_input"],
        example_separator="\n",
    )
    prompt_value = few_shot_prompt.invoke(
        {
            "new_input": "Good bye"
        }
    )
    print(prompt_value.to_string())
    res = llm.invoke(prompt_value, config=config)
    print(res.content)
    复制代码

    如果用的是聊天模型,就要用专门的 FewShotChatMessagePromptTemplate,用法也差不多:

    复制代码
    from langchain_core.prompts import ChatPromptTemplate, FewShotChatMessagePromptTemplate
     
    # 准备示例数据
    examples = [
        {"input": "Hello", "output": "你好"},
        {"input": "Thank you", "output": "谢谢"},
        {"input": "Good morning", "output": "早上好"},
    ]
    # 定义示例的格式化模板
    example_prompt = ChatPromptTemplate.from_messages(
        [
            {"role": "user", "content": "{input}"},
            {"role": "ai", "content": "{output}"}
        ]
    )
    # 创建示例提示词模版
    few_shot_prompt = FewShotChatMessagePromptTemplate(
        examples=examples,
        example_prompt=example_prompt
    )
    # 构建最终的聊天提示模板
    chat_prompt = ChatPromptTemplate.from_messages(
        [
            {"role": "system", "content": "请把以下英文翻译成中文:"},
            few_shot_prompt,
            {"role": "user", "content": "{new_input}"}
        ]
    )
    # 输入内容
    prompt_value = chat_prompt.invoke(
        {
            "new_input": "Where are you from?",
        }
    )
    print(prompt_value.to_string())
    res = llm.invoke(prompt_value, config=config)
    print(res.content)
    复制代码

    总的来说,FewShotPromptTemplate 是解决大模型输出不稳定问题最简单也最有效的手段之一。不用改模型,不用调参数,只要花几分钟准备几个高质量的示例,就能让你的 AI 应用体验上一个台阶。

  • 相关阅读:
    grafana将label值转化为metrics
    深入理解算法:从基础到实践
    k8s控制器之Deployment第二弹之创建Deployment
    vue3 antd多级动态菜单(二)后台管理系统(两种方法过滤有无子菜单children)
    java-net-php-python-springboot宿舍管理计算机毕业设计程序
    Python-pip镜像源配置及国内常用镜像源
    JVM垃圾回收系列之垃圾收集器一
    种类并查集(反集),学习T宝代码
    解决Ubuntu 或Debian apt-get IPv6问题:如何设置仅使用IPv4
    自动化测试-友好的第三方库
  • 原文地址:https://www.cnblogs.com/halfcode/p/20062360
  • 最新文章
  • C# 内存安全性的重大演进:重新定义 unsafe 关键字
    [MAF的Agent管道详解-05]对话历史的持久化和输入输出的增强
    一行代码干翻 Java 反射?EggG 流式反射调用让反射优雅到不可思议
    vibe coding(二)Where you go:一个微型 windows 桌面覆盖工具
    [送码] 用 AI Coding 做了一个 App,谈谈 AI Coding 的真实体验
    面试官:说一下 Agent 的常见范式,如何选型?
    CAD子系统,是自研还是外包?
    polygon出题教程
    Manim物理模拟:别自己写欧拉了!
    AI 学习笔记:Agent 的应用演示
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号