LangChain快速开始

2023-07-11  本文已影响0人  汇集

什么是LangChain

langchain 是一个框架, 用于连接大语言模型的框架, 它提供了一整套工具、组件和接口,简化上层应用与大语言模型,聊天模型的的过程,可轻松管理与模型的交互,以及跟多组件链接起来。

在 LangChain 中 提供 5 大模块助力于引用的开发

以上内容引用于LangChain 🦜️🔗 中文网

使用 LangChain前期准备

前期准备内容

  1. Python 环境 version>=3.0

  2. OPENAI_API_KEY 自行准备,用于体验与语言模型交互

  3. 安装 LangChain依赖

    pip install langchain openai

简单实用示例

构建简单的 LLM 模型

from langchain import OpenAI
llm = OpenAI(
    temperature=0,
    openai_api_key='<OPENAI_API_KEY>',
    model_name="gpt-3.5-turbo-16k"
)
# --------- 不具备上下文理解能的调用方式
while True:
    print("输入问题")
    ls = input()
    print("\n-----\n")
    print(track_tokens_usage(llm, ls))
    print("\n 回答结束 \n")

具体的使用结果

[图片上传失败...(image-db2c43-1689201283644)]

<img src="https://blogimg.50xr.com/markdown/202307122158605.png" alt="image-20230712215815549" style="zoom:50%;" />

从以上简单的示例中可以看出,在每次简单调用的时候, 不具备理解上下文的内容, 这个使用我们需要结合使用memory模型了,

memory模式的使用

  1. ConversationBufferMemory
  2. ConversationSummaryMemory

以上两个类都是在调用接口的时候使用内存存储上下文内容, 但是存在本质上的区别

区别 ConversationBufferMemory ConversationSummaryMemory
存储形式 使用原始内容进行记录 会调用接口生成摘要
token消耗 与聊天内容成正比 整体为正比关系,但是后期消耗 token 比前期少
请求次数 只有一次请求 有两次请求, 其中一次会回去全部聊天内容的摘要

使用示例

  1. 具体代码
from langchain.memory import ConversationBufferMemory, ConversationSummaryMemory
from langchain.chains import ConversationChain
from langchain.chat_models import ChatOpenAI
# 定义 LLM 模型
llm = OpenAI(
    temperature=0,
    openai_api_key='<OPENAI_API_KEY>',
    model_name="gpt-3.5-turbo-16k"
)
# 定义 memory 对象
conversation = ConversationChain(llm=llm, memory=ConversationBufferMemory())
# conversation = ConversationChain(llm=llm, memory=ConversationSummaryMemory(llm=llm))
while True:
    print("输入问题")
    ls = input()
    print("\n-----\n")
    # 这里可以去掉空格,标点
    print(chain_tokens_usage(conversation, ls))
    print("***********************   打印具体的保存内容 *************************")
    print(conversation.memory.buffer)
    print("***********************   打印具体的保存内容 *************************")
    print("\n 回答结束 \n")

  1. 执行结果, 提问与上面相同

[图片上传失败...(image-c58378-1689201283645)]

[图片上传失败...(image-9786b1-1689201283645)]

上图是采用ConversationSummaryMemory 模式进行的问答,从上图中可以看出已经具备一定的上下文理解能力。 采用 ConversationBufferMemory 模式的可以自己尝试一下

统计 token 使用以及费用

具体代码如下

from langchain.callbacks import get_openai_callback
def track_tokens_usage(llm, query):
    """直接使用大模型进行调用openai 接口"""
    with get_openai_callback() as cb:
        result = llm(query)
        # 以下为打印真实的消耗和具体费用
        print(f"Total Tokens: {cb.total_tokens}")
        print(f"Prompt Tokens: {cb.prompt_tokens}")
        print(f"Completion Tokens: {cb.completion_tokens}")
        print(f"Successful Requests: {cb.successful_requests}")
        print(f"Total Cost (USD): ${cb.total_cost}")

    return result


def chain_tokens_usage(chain, query):
    """使用 chain 调用 openai 接口"""
    with get_openai_callback() as cb:
        result = chain.run(query)
        # 以下为打印真实的消耗和具体费用
        print(f"Total Tokens: {cb.total_tokens}")
        print(f"Prompt Tokens: {cb.prompt_tokens}")
        print(f"Completion Tokens: {cb.completion_tokens}")
        print(f"Successful Requests: {cb.successful_requests}")
        print(f"Total Cost (USD): ${cb.total_cost}")

    return result

写在最后

  1. 这只是一个简单的使用示例, langchain 还有很多强大而有用的内容等待一步步的学习
  2. 第一次学习 python 相关内容, 如有用词不当,不正确的地方,敬请谅解

源码地址

源码

上一篇 下一篇

猜你喜欢

热点阅读