您现在的位置是:首页 > 文章详情

把LangChain跑起来的3个方法 | 京东云技术团队

日期:2023-07-04点击:566

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

Langchain官方文档地址: https://python.langchain.com/

基础功能

LLM 调用

  • 支持多种模型接口,比如 OpenAI、HuggingFace、AzureOpenAI …
  • Fake LLM,用于测试
  • 缓存的支持,比如 in-mem(内存)、SQLite、Redis、SQL
  • 用量记录
  • 支持流模式(就是一个字一个字的返回,类似打字效果)

Prompt管理,支持各种自定义模板

拥有大量的文档加载器,比如 Email、Markdown、PDF、Youtube …

对索引的支持

  • 文档分割器
  • 向量化
  • 对接向量存储与搜索,比如 Chroma、Pinecone、Qdrand

Chains

  • LLMChain
  • 各种工具Chain
  • LangChainHub

详细地址可参考:
https://www.langchain.cn/t/topic/35

测试Langchain工程的3个方法:

1 使用Langchian提供的FakeListLLM

为了节约时间,直接上代码

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\nAction 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,访问维基百科查询

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"\n===PROMPT====\n{prompt}\n=====END OF PROMPT======")) 

初始化agent

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

使用huggingface

https://huggingface.co/docs

1.注册账号

2.创建Access Tokens

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

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_store\helloLangChain.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) 

作者:京东科技 杨建

来源:京东云开发者社区

原文链接:https://my.oschina.net/u/4090830/blog/10086279
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章