写点什么

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

  • 2023-07-04
    北京
  • 本文字数:1808 字

    阅读完需:约 6 分钟

使用 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 osfrom decouple import configfrom langchain.agents import initialize_agentfrom langchain.agents import AgentTypefrom langchain.agents import load_tools
复制代码


这里 mock 下 ChatGPT,使用 mockLLm


#from langchain.llms import OpenAIfrom langchain.llms.fake import FakeListLLMos.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 HumanInputLLMfrom langchain.agents import load_toolsfrom langchain.agents import initialize_agentfrom langchain.agents import AgentTypefrom 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 UnstructuredFileLoaderfrom langchain.chains.summarize import load_summarize_chainfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain import HuggingFaceHubimport osfrom 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.1flan_t5xxl = HuggingFaceHub(repo_id="google/flan-t5-xxl",                          model_kwargs={"temperature":overal_temperature,                                        "max_new_tokens":200}                         ) 
llm = flan_t5xxltools = load_tools(["llm-math"], llm=llm)
复制代码


创建总结链


chain = load_summarize_chain(llm, chain_type="refine", verbose=True)
复制代码


执行总结链


chain.run(split_documents)
复制代码


作者:京东科技 杨建

来源:京东云开发者社区

发布于: 刚刚阅读数: 3
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
把LangChain跑起来的3个方法 | 京东云技术团队_人工智能_京东科技开发者_InfoQ写作社区