当前位置: 首页 > 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;设计的对象…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...