LangChain快速入门指南

LangChain快速入门指南

学习目标

  • 快速入门,了解LangChain的核心功能和使用方法。

学习内容

一、LangChain之六大核心模块

  1. 模型(Models):LangChain支持的各种模型类型和模型集成。
  2. 提示(Prompts):包括提示管理、提示优化和提示序列化。
  3. 链(Chains):一系列调用,包含LLM或不同实用工具的调用序列。
  4. 索引(Indexes):结合自己的文本数据使用语言模型的最佳实践。
  5. 代理(Agents):代理涉及LLM做出行动决策、执行行动并观察结果,直到完成任务。
  6. 内存(Memory):在链/代理调用之间保持状态的概念。

为了便于记忆,可以通过以下例子理解这些核心模块:当使用大模型时,首先需要对接模型。接着,想如何询问大模型的问题(提示词)。然后将这些提示词连接起来(链)。为了增强大模型的能力,可以让它拥有额外的知识(索引)和代替我们执行某些任务(代理)。最后,希望大模型在交互中能记住上下文(内存)。

二、如何接入大模型——实战

2.1 前提:LangChain如何对接ChatGPT等开源大模型
2.1.1 原生OpenAI模块调用大模型

如果你在国外或已学会科学上网,并且在OpenAI注册了API密钥,可以使用OpenAI模块进行调用:

pip install openai==0.28
import os
import openai

def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = openai.ChatCompletion.create(
        model=model,
        messages=messages,
        temperature=0,
    )
    return response.choices[0].message["content"]

if __name__ == "__main__":
    with open(".env", "r") as f:
        env_file = f.readlines()
    envs_dict = {
        key.strip("'"): value.strip("\n")
        for key, value in [(i.split("=")) for i in env_file]
    }
    os.environ["OPENAI_API_KEY"] = envs_dict["OPENAI_API_KEY"]

    openai.api_key = os.environ["OPENAI_API_KEY"]
    print(get_completion("你是谁"))
2.1.2 使用LangChain封装的OpenAI模块
2.1.2.1 环境准备

前提条件:已部署本地大模型并提供API接口。如果还不会搭建本地模型,可以参考其他博客进行学习。

安装必要的环境:

pip install openai==0.28
pip install transformers==4.32.0 accelerate tiktoken einops scipy transformers_stream_generator==0.0.4 peft deepspeed
pip install transformers_stream_generator
pip3 install -U modelscope
# 对于中国的用户,您可以使用以下命令进行安装:
# pip3 install -U modelscope -i https://mirror.sjtu.edu.cn/pypi/web/simple

指定下载位置:

from modelscope.hub.snapshot_download import snapshot_download
local_dir_root = "/root/autodl-tmp/models_from_modelscope"
snapshot_download('qwen/Qwen-7B-Chat', cache_dir=local_dir_root)
2.1.2.2 启动模型

克隆官方的Demo:

git clone https://github.com/QwenLM/Qwen.git

修改Qwen里面的openai_api地址为真实的地址,然后启动:

pip install openai==0.28
pip install -r requirements.txt
pip install fastapi uvicorn openai pydantic sse_starlette
python openai_api.py

可以携带参数:

--checkpoint-path 增量模型地址
--cpu-only cpu启动
--server-port 服务端口默认8000
--server-name 服务ip默认127.0.0.1
---disable-gc在生成每个响应后禁用GC。
2.1.2.3 使用模型

使用OpenAI模块进行调用:

import openai
openai.api_base = "http://localhost:8000/v1"
openai.api_key = "none"

# 使用流式回复的请求
for chunk in openai.ChatCompletion.create(
    model="Qwen",
    messages=[
        {"role": "user", "content": "你好"}
    ],
    stream=True
):
    if hasattr(chunk.choices[0].delta, "content"):
        print(chunk.choices[0].delta.content, end="", flush=True)

# 不使用流式回复的请求
response = openai.ChatCompletion.create(
    model="Qwen",
    messages=[
        {"role": "user", "content": "你好"}
    ],
    stream=False,
    stop=[] # 在此处添加自定义的stop words
)
print(response.choices[0].message.content)

使用LangChain封装的模块进行调用:

pip install langchain
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage

llm = ChatOpenAI(
    streaming=True,
    verbose=True,
    # 我们使用中转API平台
    base_url="https://jiekou.wlai.vip",
    openai_api_key="none",
    openai_api_base="http://127.0.0.1:8000/v1",
    model_name="Qwen-7B-Chat"
)
instructions = """
你将得到一个带有水果名称的句子,提取这些水果名称并为其分配一个表情符号
在 python 字典中返回水果名称和表情符号
"""

fruit_names = """
苹果,梨,这是奇异果
"""

prompt = (instructions + fruit_names)

output = llm([HumanMessage(content=prompt)])

print(output.content)
print("========")
print(type(output.content))

总结

通过以上内容,我们了解了LangChain的基本概念、主要特点和一些具体的使用方法。LangChain作为一个强大的框架,为开发人员提供了丰富的工具和组件,帮助他们高效地构建由语言模型支持的应用程序。希望本文能够帮助你快速上手LangChain,充分利用其强大的功能构建出色的应用程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值