0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

把LangChain跑起来的3个方法

OSC开源社区 来源:OSCHINA 社区 2023-07-05 09:59 次阅读

使用 LangChain 开发 LLM 应用时,需要机器进行 GLM 部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习 LLM 模型的应用,对 Langchain 进行快速上手?本片讲解 3 个把 LangChain 跑起来的方法,如有错误欢迎纠正。

基础功能

LLM 调用

支持多种模型接口,比如 OpenAI、HuggingFace、AzureOpenAI …

Fake LLM,用于测试

缓存的支持,比如 in-mem(内存)、SQLite、Redis、SQL

用量记录

支持流模式(就是一个字一个字的返回,类似打字效果)

Prompt 管理,支持各种自定义模板 拥有大量的文档加载器,比如 Email、Markdown、PDF、Youtube … 对索引的支持

文档分割器

向量化

对接向量存储与搜索,比如 Chroma、Pinecone、Qdrand

Chains

LLMChain

各种工具 Chain

LangChainHub

测试 Langchain 工程的 3 个方法:

1 使用 Langchian 提供的 FakeListLLM 为了节约时间,直接上代码

1f2f3f88-1a58-11ee-962d-dac502259ad0.png

import os
from decouple import config
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.agents import load_tools

这里 mock 下 ChatGPT, 使用 mockLLm

#from langchain.llms import OpenAI
from langchain.llms.fake import FakeListLLM
os.environ["OPENAI_API_KEY"] = config('OPENAI_API_KEY')

REPL 是 “Read–Eval–Print Loop”(读取 - 求值 - 打印 - 循环)的缩写,它是一种简单的、交互式的编程环境。

在 REPL 环境中,用户可以输入一条或多条编程语句,系统会立即执行这些语句并输出结果。这种方式非常适合进行快速的代码试验和调试。

tools = load_tools(["python_repl"])
responses=[
    "Action: Python REPL
Action Input: chatGpt原理",
    "Final Answer: mock答案"
]
llm = FakeListLLM(responses=responses)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("chatGpt原理2")
2 使用 Langchian 提供的 HumanInputLLM,访问维基百科查询

1f46da9e-1a58-11ee-962d-dac502259ad0.png
from langchain.llms.human import HumanInputLLM
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from wikipedia import set_lang

使用维基百科工具

tools = load_tools(["wikipedia"])

这里必须要设置为中文 url 前缀,不然访问不了

set_lang("zh")

初始化 LLM

llm = HumanInputLLM(prompt_func=lambda prompt: print(f"
===PROMPT====
{prompt}
=====END OF PROMPT======"))

初始化 agent

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("喜羊羊")
3使用 huggingface

1. 注册账号

2. 创建 Access Tokens

1f60307a-1a58-11ee-962d-dac502259ad0.png

Demo:使用模型对文档进行摘要

1f731bae-1a58-11ee-962d-dac502259ad0.png
from langchain.document_loaders import UnstructuredFileLoader
from langchain.chains.summarize import load_summarize_chain
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain import HuggingFaceHub
import os
from decouple import config

from langchain.agents import load_tools

这里 mock 下 ChatGPT, 使用 HUGGINGFACEHUB

os.environ["HUGGINGFACEHUB_API_TOKEN"] = config('HUGGINGFACEHUB_API_TOKEN')

导入文本

loader = UnstructuredFileLoader("docment_storehelloLangChain.txt")

将文本转成 Document 对象

document = loader.load()
print(f'documents:{len(document)}')

初始化文本分割器

text_splitter = RecursiveCharacterTextSplitter(
    chunk_size = 500,
    chunk_overlap = 0
)

切分文本

split_documents = text_splitter.split_documents(document)
print(f'documents:{len(split_documents)}')

加载 LLM 模型

overal_temperature = 0.1
flan_t5xxl = HuggingFaceHub(repo_id="google/flan-t5-xxl", 
                         model_kwargs={"temperature":overal_temperature, 
                                       "max_new_tokens":200}
                         ) 

llm = flan_t5xxl
tools = load_tools(["llm-math"], llm=llm)

创建总结链

chain = load_summarize_chain(llm, chain_type="refine", verbose=True)

执行总结链

chain.run(split_documents)

Leader 所有的数据,本次日志对齐即完成。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    738

    浏览量

    43468
  • OpenAI
    +关注

    关注

    8

    文章

    767

    浏览量

    5921
  • ChatGPT
    +关注

    关注

    27

    文章

    1413

    浏览量

    4799

原文标题:把LangChain跑起来的3个方法

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    S3c6410六层核心板原理+PCB板图,绝对能跑起来!

    `以前的项目资料,投过板,出过产品,绝对能跑起来!`
    发表于 12-26 17:26

    请问裸板程序运行是否一定需要uboot先跑起来

    请问,裸板程序运行是否一定需要uboot先跑起来?像用keil开发,是不是在flash里不需要uboot存在或者事先运行
    发表于 07-23 05:45

    为什么任务跑起来直接进入了while(1)出不来了?

    我建立了2相同优先级的任务,一任务里是while(1);死循环,另一是闪烁灯, 为什么任务跑起来直接进入了while(1)出不来了?不是有时间片轮询吗?
    发表于 07-24 04:35

    如何让你的ESP32跑起来

    ESP32是了国内乐鑫科技推出的Wifi&蓝牙物联网MCU,而最近项目正好在用ESP32,所以我们今天就来分享下,如何让你的ESP32跑起来,并应用于更多实际项目。1ESP32简...
    发表于 07-16 06:57

    Micropython平台是如何实现在NUCLEO-F401RE开发板跑起来

    Micropython平台是如何实现在NUCLEO-F401RE开发板跑起来的?有哪些操作流程?
    发表于 11-08 08:03

    怎样让自己编译的uboot跑起来

    小目标:让自己编译的uboot跑起来参考:wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO首先熟悉一下板子和开发流程。维基主要参考《使用全志原厂BSP
    发表于 11-08 06:37

    程序能跑起来就是很好的c代码吗

    程序能跑起来并不见得你的代码就是很好的c代码了,衡量代码的好坏应该从以下几个方面来添加链接描述看:海风教育投诉1,代码稳定,没有隐患。2,执行效率高。3,可读性高。4,便于移植。
    发表于 11-23 08:00

    如何利用XR806开发板让hello跑起来

    如何利用XR806开发板让hello跑起来
    发表于 12-29 06:16

    在板子上系统跑起来后怎么查看屏幕驱动

    请问一下,在板子上系统跑起来后怎么查看屏幕驱动
    发表于 01-10 06:24

    如何让u-boot跑起来

    如何让u-boot跑起来
    发表于 01-26 08:26

    如何借助STM32CubeProgrammer轻松将STM32MP1开发板跑起来

    在之前发布的一文中,我们获悉了如何借助STM32CubeProgrammer,轻松将STM32MP1开发板跑起来。在STM32MP1开发板跑起来之后,我们相当于有了一台微型嵌入式PC,可以支持多种
    发表于 02-22 06:07

    STM32如何区分程序跑起来用的是HSE还是HSI呢?

    本人用过f103和f030,为了取功耗低的方案,内部外部晶振都试过。但是有很多情况下,配置错了,程序貌似会自己跑内部晶振去了;一般单片机如果外部晶振跑起来应该在晶振那两脚会有波形。如果是按照我这种方法
    发表于 05-05 10:47

    Zynq 7015 linux跑起来之导入之BOOT.bin生成详解

    本文主要介绍Zynq 7015 linux跑起来之导入之BOOT.bin生成,具体的跟随小编一起来了解一下。
    的头像 发表于 06-27 10:01 6987次阅读

    FreeRTOS_003 _让系统在板子上跑起来

    FreeRTOS_003_让系统在板子上跑起来
    的头像 发表于 03-14 11:25 2502次阅读
    FreeRTOS_003 _让系统在板子上<b class='flag-5'>跑起来</b>

    windows安装ubuntu并让pioneer1应用程序跑起来的过程

    本文介绍在windows下安装ubuntu并且让pioneer1的应用程序跑起来的全过程。虽然安装ubuntu不是本文重点,但是还是啰嗦地写一遍吧。
    的头像 发表于 10-23 10:41 2096次阅读
    windows安装ubuntu并让pioneer1应用程序<b class='flag-5'>跑起来</b>的过程