langchain(基础)一

1 Langchain概述

(1)LangChain是一个基于语言模型开发应用程序的框架。

(2)LangChain 为特定用例提供了多种组件,例如个人助理、文档问答、聊天机器人、查询表格数据、与 API 交互、提取、评估和汇总。

(3)LangChain 中的模型分类:

LLM(大型语言模型):这些模型将文本字符串作为输入并返回文本字符串作为输出。它们是许多语言模型应用程序的支柱。

Chat (聊天模型):聊天模型由语言模型支持,但具有更结构化的 API。他们将聊天消息列表作为输入并返回聊天消息。这使得管理对话历史记录和维护上下文变得容易。

(4)LangChain提供了以下主要组件:

- 模型 ( Models )

- 提示词 ( Prompt )

- 代理( Agents )

- 链( Chains )

- 索引 ( Indexes )

- 内存(Memory)

- 模式 ( Schema )

(5)安装

pip install langchain==0.1.6

# 1、导入大模型的类
from langchain_community.llms import Tongyi
# 实例化
llm = Tongyi()
# 调用通义千问
ret =  llm.invoke("你是谁?")
print(ret)

2 Prompt 提示词

(1)
# # 1导入prompt的类
from langchain.prompts import PromptTemplate
# 导入通义大模型
from langchain_community.llms import Tongyi
# 定义一个模板
pp = "{county}的首都是哪里?"
# 实例化模板类
promptTemplate = PromptTemplate.from_template(pp)
# 输入
#ins = input("请输入国家名:")
ins = "中国"
# 生成prompt
prompt = promptTemplate.format(county=ins)
print(prompt)

# 实例化通义大模型
tongyi = Tongyi()
ret = tongyi.invoke(prompt)
print(ret)
(2) ChatPromptTemplate
2.2.1 概述

ChatPromptTemplate是一个模板化的对话工具,它允许用户创建、设定对话内容和格式,并与他人进行分享和互动。

通过使用ChatPromptTemplate,用户能够以一种简洁、清晰的方式组织和展示对话内容,从而提高沟通效率,减少信息混乱和误解的可能性。

2.2.2 功能:

上下文理解

模版创建

角色和参数

2.2.3 应用场景

ChatPromptTemplate广泛应用于各种聊天软件和社交平台,特别是在需要高效、清晰沟通的场景中,如客服系统、在线教育、社交媒体等。

2.2.4 案例
from langchain.prompts import ChatPromptTemplate
from langchain_community.llms import Tongyi
from langchain.schema import SystemMessage, HumanMessage, AIMessage

sy = SystemMessage(content="你是一个起名大师. 你的名字叫宋大师.")
hu = HumanMessage(content="我家是男宝姓杨,请起3个好养的名字?")

message = [sy, hu]

# 实例化模板类
chartmp =  ChatPromptTemplate.from_messages(message)
prompt = chartmp.format_messages(sex="男",firstName="李")
print(prompt)

tongyi = Tongyi()
ret = tongyi.invoke(prompt)
print(ret)
(3) ChatMessagePromptTemplate
2.3.1 概述

ChatMessagePromptTemplate主要用于在对话模型(chat model)中,封装并生成具有特定角色或自定义角色的聊天消息提示。

2.3.2 案例
from langchain.prompts import ChatMessagePromptTemplate
from langchain_community.llms import Tongyi

message = '请帮我写一篇关于{type}的文章'

promptTemplate = ChatMessagePromptTemplate.from_template(role='全科医生', template=message)

prompt = promptTemplate.format(type="心脏病")
print(prompt)

tongyi = Tongyi()
ret = tongyi.invoke(prompt.content)
print(ret)
(4) StringPromptTemplate自宝义模板
2.4.1 定义

StringPromptTemplate是一个类,它允许用户通过提供模板字符串和参数来生成自定义的Prompt。

2.4.2 特性

参数化

灵活性

易于使用

2.4.3 案例
from langchain.prompts import StringPromptTemplate
from langchain_community.llms import Tongyi

Prompt = '你是特别会起名的大师,请按照如下格式,输出一个名字,并解释为什么这个名字好听。\n名字:{name}\n解释:'
class CustmPrompt(StringPromptTemplate):

    def format(self, **kwargs) -> str:
        # 生成提示词模板
        prompt = Prompt.format(name=kwargs["name"])
        return prompt
pp = CustmPrompt(input_variables=["name"])
content = input("请输入一个名字:")
prop = pp.format(name=content)
print('prop:', prop)
tongyi = Tongyi()
ret = tongyi.invoke(prop)
print('ret:', ret)
(5)使用jinja2与f-string来实现提示词模板格式化
2.5.1 安装

pip install jinja2

2.5.2 案例
from langchain.prompts import PromptTemplate
from langchain_community.llms import Tongyi
content = "{{county}}的首都在那里?"
promptTemplate = PromptTemplate.from_template(content, template_format="jinja2")
ins = "中国"
prompt = promptTemplate.format(county=ins)
print('jinja2', prompt)
tongyi = Tongyi()
ret = tongyi.invoke(prompt)
print(ret)

content1 = "{county}的首都在那里?"
promptTemplate1 = PromptTemplate.from_template(content1, template_format="f-string")
prompt1 = promptTemplate1.format(county=ins)
print('f-string', prompt1)
ret1 = tongyi.invoke(prompt1)
print(ret1)
(6)使用PipelinePromptTemplate实现多步提示词
from langchain.prompts.pipeline import PipelinePromptTemplate
from langchain.prompts.prompt import PromptTemplate

full_template = "{user}{sex}{name}"
full_prompt = PromptTemplate.from_template(full_template)

# 第1层基本设计
user = """#你是一个擅长{user}的大师,请你起根据性别和姓氏起三个名字"""
user_prompt = PromptTemplate.from_template(user)

# 第2层基本设计
sex = """#性别{sex}"""
sex_prompt = PromptTemplate.from_template(sex)

# 第3基本设计
name = """#姓氏{name}"""
name_prompt = PromptTemplate.from_template(name)

input_prompts = [
    ("user", user_prompt),
    ("sex", sex_prompt),
    ("name", name_prompt),
]
pipeline_prompt = PipelinePromptTemplate(final_prompt=full_prompt, pipeline_prompts=input_prompts)
print(pipeline_prompt.format(user="起名", sex="男", name="杨"))

from langchain_community.llms import Tongyi
tongyi = Tongyi()
ret = tongyi.invoke(pipeline_prompt.format(user="起名", sex="女", name="杨"))
print(ret)

  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值