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

bash 复制代码
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模板封装

bash 复制代码
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格式

yaml 复制代码
 _type: prompt
input_variables:
    ["adjective", "content"]
template: 
    Tell me a {adjective} joke about {content}.

json格式

json 复制代码
{
    "_type": "prompt",
    "input_variables": ["adjective", "content"],
    "template": "Tell me a {adjective} joke about {content}."
}

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

json 复制代码
{
    "_type": "prompt",
    "input_variables": ["adjective", "content"],
    "template_path": "simple_template.txt"
}
python 复制代码
# 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.
相关推荐
Hugo_Hoo5 小时前
构建LangChain应用程序的示例代码:53、利用多模态大型语言模型在RAG应用中处理混合文档的示例
人工智能·langchain·ai编程
人工智能小豪6 小时前
LLM大模型企业应用实战-----为Langchain Agent添加记忆功能
人工智能·langchain·大模型·llm·私有化部署·产品经理·ai大模型
charles_vaez8 小时前
开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(五)
深度学习·websocket·语言模型·langchain·fastapi
写代码的中青年9 小时前
Semantic Kernel:微软大模型开发框架——LangChain 替代
人工智能·python·microsoft·langchain·大模型·llm
大耳朵爱学习10 小时前
周鸿祎:大模型不是风口和泡沫,将引领新工业革命
人工智能·机器学习·语言模型·自然语言处理·prompt·职场发展
LDG_AGI21 小时前
【机器学习】Google开源大模型Gemma2:原理、微调训练及推理部署实战
人工智能·python·深度学习·机器学习·langchain·aigc·language model
AI小白龙*21 小时前
开源模型破局OpenAI服务限制,15分钟灵活搭建RAG和Agent应用
llm·prompt·embedding·agent·ai大模型·rag·大模型部署
猫头虎1 天前
最新榜单出炉!2024年6月AI行业微信公众号排行榜
人工智能·科技·微信·chatgpt·prompt·aigc·ai-native
木乐乐数据2 天前
用 AI 生成绘本,含大量 prompt
prompt
Hugo_Hoo2 天前
构建LangChain应用程序的示例代码:49、如何使用 OpenAI 的 GPT-4 和 LangChain 库实现多模态问答系统
人工智能·langchain·ai编程