• langchain教程-(1)Prompt模板


    LangChain 的核心组件

    1. 模型 I/O 封装
      • LLMs:大语言模型
      • Chat Models:一般基于 LLMs,但按对话结构重新封装
      • PromptTemple:提示词模板
      • OutputParser:解析输出
    2. 数据连接封装
      • Document Loaders:各种格式文件的加载器
      • Document Transformers:对文档的常用操作,如:split, filter, translate, extract metadata, etc
      • Text Embedding Models:文本向量化表示,用于检索等操作(啥意思?别急,后面详细讲)
      • Verctorstores: (面向检索的)向量的存储
      • Retrievers: 向量的检索
    3. 记忆封装
      • Memory:这里不是物理内存,从文本的角度,可以理解为“上文”、“历史记录”或者说“记忆力”的管理
    4. 架构封装
      • Chain:实现一个功能或者一系列顺序功能组合
      • Agent:根据用户输入,自动规划执行步骤,自动选择每步需要的工具,最终完成用户指定的功能
        • Tools:调用外部功能的函数,例如:调 google 搜索、文件 I/O、Linux Shell 等等
        • Toolkits:操作某软件的一组工具集,例如:操作 DB、操作 Gmail 等等
    5. Callbacks
      在这里插入图片描述

    官方文档地址:https://python.langchain.com/docs/get_started

    多轮对话封装

    AIMessage, #等价于OpenAI接口中的assistant role 大模型的回复
    HumanMessage, #等价于OpenAI接口中的user role
    SystemMessage #等价于OpenAI接口中的system role

    import os
    from dotenv import load_dotenv
    load_dotenv()
    
    from langchain_openai import AzureChatOpenAI
    model = AzureChatOpenAI(azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
            azure_deployment=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],
            openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"],
            temperature=0,
            model_kwargs={"seed": 42})
    
    from langchain.schema import (
        AIMessage, #等价于OpenAI接口中的assistant role
        HumanMessage, #等价于OpenAI接口中的user role
        SystemMessage #等价于OpenAI接口中的system role
    )
    
    messages = [
        SystemMessage(content="你是一个课程助理。"),
        HumanMessage(content="我来上课了")
    ]
    response = model(messages)
    print(response)  #  AIMessage
    

    Prompt模板封装

    import os
    from dotenv import load_dotenv, find_dotenv
    
    _ = load_dotenv(find_dotenv())
    from langchain.prompts import ChatPromptTemplate
    from langchain.prompts.chat import SystemMessagePromptTemplate, HumanMessagePromptTemplate
    from langchain_openai import AzureChatOpenAI
    
    template = ChatPromptTemplate.from_messages(
        [
            SystemMessagePromptTemplate.from_template("你是{product}的客服助手。你的名字叫{name}"),
            HumanMessagePromptTemplate.from_template("{query}"),
        ]
    )
    llm = AzureChatOpenAI(azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
            azure_deployment=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],
            openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"],
            temperature=0,
            model_kwargs={"seed": 42})
    
    prompt = template.format_messages(
            product="AGI课堂",
            name="瓜瓜",
            query="你是谁"
        )
    
    response = llm(prompt)
    
    # chain = template | llm
    # response = chain.invoke({"product": "AGI课堂",
    #                          "name": "瓜瓜",
    #                        "query": "你是谁"})
    
    print(response)  #  AIMessage
    

    从文件加载Prompt模板

    yaml格式

     _type: prompt
    input_variables:
        ["adjective", "content"]
    template: 
        Tell me a {adjective} joke about {content}.
    

    json格式

    {
        "_type": "prompt",
        "input_variables": ["adjective", "content"],
        "template": "Tell me a {adjective} joke about {content}."
    }
    

    Template可以单独存放在.txt文件夹中

    {
        "_type": "prompt",
        "input_variables": ["adjective", "content"],
        "template_path": "simple_template.txt"
    }
    
    # cat simple_template.txt
    # Tell me a {adjective} joke about {content}.
    
    from langchain.prompts import load_prompt
    
    prompt = load_prompt("test.json")
    
    print(prompt.format(adjective="funny", content="fox"))
    # Tell me a funny joke about fox.
    
  • 相关阅读:
    数据结构与算法之让我们种下一棵字典树(Java/C++双语言实现)
    前端技术知识(含八股)总结 - 持续更新中
    金秋开学季,先进计算基础训练营开营了|猿代码科技
    网络安全(黑客)自学
    20221120 今天的世界发生了什么
    Google 向中国开发者开放数百份 TensorFlow 资源
    【算法 | 模拟No.5】leetcode 74. 搜索二维矩阵
    安信可Ai-WB1系列固件烧录指导
    mySQL和Hive的区别
    MySQL 1 数据库概述知识
  • 原文地址:https://blog.csdn.net/qq_34184505/article/details/139774124