首页 > 其他分享 >langchain(基础)一

langchain(基础)一

时间:2024-08-26 19:25:49浏览次数:6  
标签:prompt 基础 ret Tongyi langchain print import

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)

标签:prompt,基础,ret,Tongyi,langchain,print,import
From: https://blog.csdn.net/Mooczx/article/details/141571115

相关文章

  • python基础学习总结(十)
    ​文章目录面向对象一.内置内属性二.对象销毁三.类的继承四.方法重写1.基础重载方法2.运算符重载3.类的属性和方法1.类的私有属性2.类的方法3.类的私有方法五.下划线说明面向对象一.内置内属性属性|定义----|----dict|类的属性(包含一个字典,由类......
  • Nond.Js基础(2)——请求响应与HTTP协议
    目录一、请求响应与HTTP协议1、创建web服务器 2、请求与响应1、req2、res3、根据不同url地址处理请求:3、HTTP协议请求报文:get类型接口:post类型接口: 响应报文:一、请求响应与HTTP协议1、创建web服务器 //引入模块consthttp=require('http');//http.creat......
  • Node.Js基础——安装及模块
    一、什么是Node.Js?Node.js是一个开源和跨平台的JavaScript运行时环境。它让JavaScript可以脱离浏览器端,在服务器端运行,让javaScript可以开发后端程序,实现了大部分其他后端语言的功能。 Node.js建立在GoogleChromeV8JavaScript引擎之上,主要用于创建网络服务器-但......
  • 关于流量圈的基础认知,小白入门必看
    流量的四种类型1、自热:就是你平时正常在各平台发作品,跑的流量​2、加热:通过一定的付费形式,让平台给你发的作品推荐更多的流量,比如投抖加,薯条推广等​3.截流:截取别人自热产生的流量,常见的有评论区下钩子截流,主页留钩子点赞,管住,@留痕等等​4.付费投流:通过付费的方式,让平......
  • 设计模式基础
    1.面向对象设计的原则(七大原则)1.1单一职责(SPR:SingleResponsibilitiesPrinciple):一个类应只负责一个功能领域的相关职责,即只有一个使它变化的原因1.2开放闭合(OCP:Open-ClosePrinciple):软件实体应对扩展开发,对修改关闭,即实体可以扩展,但不能在原来的实体上修改1.3里氏代换(LSP:......
  • MySQL-基础篇
    MySQL概述1、数据库相关概念主流的关系型数据库:总结1)数据库:数据存储的仓库2)数据库管理系统:操纵和管理数据库的大型软件3)SQL:操作关系型数据库的编程语言,是一套标准2、MySQL数据库版本MySQL官方提供了两种不同的版本:社区版(MySOLCommunityServer)=>免费,MySQL......
  • 学会Python基础制作简单计算器(附源码)
    在Python中,我们可以使用tkinter库来制作一个具有图形用户界面的简单计算器。以下是一个完整的教程,包括设计思路、代码实现以及运行效果说明。设计思路在设计计算器程序时,我们需要考虑以下几个方面:界面设计:计算器需要一个简单的用户界面,用户可以通过该界面输入数字和运算符......
  • 教你迅速上手LangChain:十分钟入门到精通,一篇文章足矣!
    背景快速入门的三部曲跟家里安装防盗门的步骤是类似的.安装门设密码测试一下对应到解决方案领域的快速入门的三部曲是什么?安装:Install环境设置:Env写DEMO:Demo那对应到LangChain的快速入门上是什么呢?前两个步骤没差异,关键是写DEMO上.了解本文详......
  • LangChain入门手册——附赠PDF版
    《LangChain入门指南》LangChain作为大模型集成框架鼎鼎大名,这本《LangChain入门指南》是一本很及时的书,值得推荐~01为什么需要LangChain首先想象一个开发者在构建一个LLM应用时的常见场景。当你开始构建一个新项目时,你可能会遇到许多API接口、数据格式和工具。对于一......
  • k8s 基础命令
    1.查看所有api资源kubectlapi-resourcesNAME资源名称SHORTNAMES资源简写APIGROUPapi组NAMESPACED命名空间KIND分类[root@k8s-master~]#kubectlapi-resourcesNAMESHORTNAMESAPIGROUPNAMESPACEDKINDbindi......