当前位置: 首页 > news >正文

langchain入门指南和实战

简单介绍

LangChain 是一个开源的语言模型集成框架,旨在简化使用大型语言模型(LLM)创建应用程序的过程。
利用它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人、
调用特定的SaaS服务等等。

OpenAi接口

1,/v1/models 用来返回可用的模型列表
2,/v1/completions 给定提示,模型将返回一个或多个预测完成,还可以返回每个位置的替代令牌的概率。
3,/v1/chat/completions 给定聊天对话,模型将返回聊天完成响应。角色有system assistant user

LangChain 中主要支持的组件如下所述:

Models:各种类型的模型和模型集成,比如OpenAI 的 ChatGPT。

import os
os.environ.setdefault("OPENAI_API_BASE", "http://llm.demo.haizhi.com/v1")
os.environ.setdefault("OPENAI_API_KEY", "EMPTY")from langchain.llms import OpenAI#llm = OpenAI(temperature=0, model_name="Baichuan2-13B-Chat")  # model_name="text-davinci-003" 这里使用OpenAI接口调用LLM模型
llm = OpenAI(temperature=0, model_name="ChatGLM2-6B")  # model_name="text-davinci-003" 这里使用OpenAI接口调用LLM模型
text = "你是个诗人,我写个劝学的打油诗吧"
print(llm(text))

Prompts:提示管理、提示优化和提示序列化,通过提示微调模型的语义理解。

import os
os.environ.setdefault("OPENAI_API_BASE", "http://llm.demo.haizhi.com/v1")
os.environ.setdefault("OPENAI_API_KEY", "EMPTY")from langchain.llms import OpenAIfrom langchain import PromptTemplatetemplate = """Question: {question}Let's think step by step.Answer: """#llm = OpenAI(temperature=0, model_name="Baichuan2-13B-Chat")
llm = OpenAI(temperature=0, model_name="ChatGLM2-6B")prompt = PromptTemplate(template=template, input_variables=["question"])final_promot = prompt.format(question="请告诉我该怎么学习大模型?")print(llm(final_promot))

Memory:用来保存和模型交互时的上下文状态。
Indexes:用来结构化文档,以便和模型交互。
Chains:一系列对各种组件的调用。

import os
os.environ.setdefault("OPENAI_API_BASE", "http://llm.demo.haizhi.com/v1")
os.environ.setdefault("OPENAI_API_KEY", "EMPTY")from langchain.llms import OpenAI
from langchain import PromptTemplate
from langchain import LLMChaintemplate = """Question: {question}Let's think step by step.Answer: """#llm = OpenAI(temperature=0, model_name="Baichuan2-13B-Chat")
llm = OpenAI(temperature=0, model_name="ChatGLM2-6B")prompt = PromptTemplate(template=template, input_variables=["question"])# final_promot = prompt.format(question="请告诉我该怎么学习大模型?")# print(llm(final_promot))llm_chain = LLMChain(prompt=prompt, llm=llm)question = "请告诉我该怎么学习向量库?"print(llm_chain.run(question))

Agents:决定模型采取哪些行动,执行并且观察流程,直到完成为止。

import os
os.environ.setdefault("OPENAI_API_BASE", "http://192.168.1.171:23620/v1")
os.environ.setdefault("OPENAI_API_KEY", "EMPTY")
from langchain.llms import OpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.chains import SimpleSequentialChain#llm = OpenAI(temperature=0, model_name="Chinese-Alpaca-2-7B-ywj1016")
llm = OpenAI(temperature=0, model_name="ChatGLM2-6B")# 第一个链模版内容
template1 = "根据用户的输入的描述推荐一个适合的地区,用户输入: {value}"
prompt_template1 = PromptTemplate(input_variables=["value"], template=template1)
# 构建第一个链
chain1 = LLMChain(llm=llm, prompt=prompt_template1)# 第二个链模版内容
template2 = "根据用户的输入的地区推荐该地区的美食,用户输入: {value}"
prompt_template2 = PromptTemplate(input_variables=["value"], template=template2)
# 构建第二个链
chain2 = LLMChain(llm=llm, prompt=prompt_template2)# 将链组装起来
overall_chain = SimpleSequentialChain(chains=[chain1, chain2], verbose=True)# 运行链
review = overall_chain.run("北京")
print('结果:', review)

参考 https://github.com/langchain-ai/langchain
参考 https://github.com/chatchat-space/Langchain-Chatchat

相关文章:

langchain入门指南和实战

简单介绍 LangChain 是一个开源的语言模型集成框架,旨在简化使用大型语言模型(LLM)创建应用程序的过程。 利用它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人、 调用特定的SaaS服务…...

群晖synology DSM 7.2设置钉钉Webhooks通知

现在越来越多的小伙伴都有了自己的Nas系统,为了更加方便的接收Nas的消息,这篇文章带着大家一起配置一个钉钉(机器人)即时消息通知 首先登录钉钉的开放平台:开发者后台统一登录 - 钉钉统一身份认证 1.创建一个机器人&…...

STP生成树协议详解

一、STP作用 如果链路断开或节点故障,那么互联的设备就无法正常通信了,这类网络问题叫做单点故障。没有备份的链路或节点,出现故障会直接断网。如果要提供 724 小时不间断的服务,那就需要在网络中提前部署冗余。避免出现单点故障…...

CentOS 6/7/8 操作系统镜像下载

CentOS Mirrors List ​编辑 DownloadAbout About CentOS Frequently Asked Questions (FAQs) Special Interest Groups (SIGs) CentOS Variants Governance Community Contribute Forums Mailing Lists IRC Calendar & IRC Meeting List Planet Submit a Bug Stories Doc…...

中国社科院与美国杜兰大学金融管理硕士---不将就的人生

“万般皆下品,惟有读书高”、“书中自有颜如玉,书中自有黄金屋”,古往今来,读书的好处为人们所重视。从而想拿到学历没有知识的沉淀,没有一定的学识水平,又怎么能拿到含金量颇高的学历呢?退一步…...

教程更新 | 持续开源 RK3568驱动指南-驱动基础进阶篇

《iTOP-RK3568开发板驱动开发指南》手册文档更新,手册内容对应视频教程,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。 ✦ 第一篇 驱动基础 第1章 前言 第2章 你好!内核源码 第3章 …...

Jmeter测试关联接口

Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,本文主要介绍jmeter通过正则表达式提取器来实现接口关联的方式,可供参考。 一、实例场景: 有如下两个接口,通过正则表达式提取器,将第一…...

C++之基于Winsock2封装UDPServer与UDPClient

文章目录 Socket过程UDPServer.hUDPServer.cppUDPClient.hUDPClient.cppmain.cppCMakeLists.txt测试截图 Socket过程 UDPServer UDPClient UDPServer.h #ifndef UDPSERVER_H_INCLUDED #define UDPSERVER_H_INCLUDED#include <iostream> #include <string> #inclu…...

为什么说指针是c语言的灵魂?

为什么说指针是c语言的灵魂&#xff1f; 语言主要操作的对象是数据&#xff0c;c语言里面能够有大容量数据的地方就是指针指向的heap内存。从这 个角度来看&#xff0c;确实指针就是数据的灵魂。最近很多小伙伴找我&#xff0c;说想要一些c语言资料&#xff0c;然后我根据自己…...

性能测试jmeter命令行运行+html测试报告解读

windows下打开jmeter的运行窗口&#xff0c;可以看到提示不要用GUI模式进行负载测试&#xff0c;如果要用负载测试&#xff0c;用cli模式&#xff0c;因为GUI模式运行jmeter比较消耗性能。 命令行模式 windows下找到jemeter所在文件夹&#xff0c;打开cmd输入命令。 jmeter -n…...

Service Mesh和Kubernetes:加强微服务的通信与安全性

文章目录 什么是Service Mesh&#xff1f;Service Mesh的优势1. 流量控制2. 安全性3. 可观测性 Istio&#xff1a;Service Mesh的领军者流量管理安全性可观测性 Linkerd&#xff1a;轻量级Service Mesh流量管理安全性可观测性 Istio vs. Linkerd实际应用结论 &#x1f388;个人…...

『吴秋霖赠书活动 | 第三期』《Python asyncio并发编程》

文章目录 1. 写在前面2. 浅谈asyncio3. Python asyncio并发编程 不再受限于&#xff01;asyncio异步让你的程序在高并发时翱翔自如&#xff01; 声明&#xff1a;赠书活动是博主与出版社达成合作&#xff0c;只属于粉丝的专属福利 本期书籍&#xff1a;《Python asyncio并发编程…...

数字孪生在工厂领域的应用和优势

工厂运营一直以来都是高度复杂且信息密集的任务。然而&#xff0c;随着数字孪生技术的出现&#xff0c;工厂领域正在经历一场前所未有的革命。本文将介绍数字孪生在工厂领域的应用&#xff0c;以及它如何重新定义了制造业的运营方式。 什么是数字孪生&#xff1f; 数字孪生是…...

如何写代码实现VRP问题中车辆容量限制及时间窗要求(python)

问题研究背景 使用遗传模拟退火算法求解如下10个卸货点的VRPTW问题。为了使研究的问题更加有意义&#xff0c;本人将时间限理解为服务点一天的具体可以允许配送的时间。 如果不要求车辆从配送中心出发的时间是统一的并且为0时刻&#xff0c;那么就默认第一个配送节点是一定能赶…...

C语言求解汉诺塔问题

完整代码&#xff1a; /*Hanoi(汉诺)塔问题。这是一个古典的数学问题&#xff1a;古代有一个梵塔&#xff0c;塔内有 3 个 座 A&#xff0c;B&#xff0c;C&#xff0c;开始时 A 座上有 64 个盘子&#xff0c;盘子大小不等&#xff0c;大的在下&#xff0c;小的在上。有一个老…...

安装LSF

安装需求 基本硬件配置建议&#xff1a; CPU 4核或以上&#xff08;LSF 没有最低 CPU 需求&#xff0c;此处只是建议&#xff09;内存 8G或以上&#xff08; 当没有作业在运行时&#xff0c; Linux x86-64 上集群中的 LSF 守护程序将使用大约 488 MB 内存。&#xff09;交换…...

百度的新想象力在哪?

理解中国大模型&#xff0c;百度是一个窗口。这个窗口的特殊性不仅在于变化本身&#xff0c;而是在于百度本身就是那个窗口。 作者|皮爷 出品|产业家 沿着首钢园北区向西北步行10分钟&#xff0c;就能看到一个高约90米的大跳台&#xff0c;在工业园钢铁痕迹的印衬下&#…...

Linux使用rpm包安装mysql5.7

以前安装过mysql 前言&#xff1a;检查以前是否装有mysql rpm -qa|grep -i mysql安装了会显示&#xff1a;   bt-mysql57-5.7.31-1.el7.x86_64 停止mysql服务和删除之前安装的mysql rpm -e bt-mysql57-5.7.31-1.el7.x86_64查找并删除mysql相关目录 find / -name mysql/va…...

LLDB 三种输出方式 对比及原理探索

前言 当我们的项目过大时,就会使我们项目的编译耗时过长,如何在项目运行时进项代码调试,熟练使用LLDB就可以解决这个难题,大幅度提高我们的开发效率。 什么是 LLDB? LLDB是英文Low Lever Debug的缩写,是XCode内置的为我们开发者提供的调试工具,它与LLVM编译器一起,存…...

基于架构软件设计-架构真题(五十八)

“41”视图主要描述系统逻辑架构。其中&#xff08;&#xff09;视图用于描述对象模型&#xff0c;并说明系统应该为用户提供哪些服务。 过程开发物理逻辑 解析&#xff1a; “41”有逻辑视图、过程视图、物理视图、开发视图和架构的描述。 逻辑视图&#xff1a;设计的对象…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...