LangChain系统安装和快速入门| 第七届字节青训营

281 阅读5分钟

安装LangChain

安装LangChain可以通过pip install langchain完成,但要注意与其他工具的集成需要额外安装依赖,如openaichroma

推荐使用pip install langchain[llms]来安装包含常用大语言模型的版本,之后再用pip install --upgrade langchain来保持最新版本。

Openai API

OpenAI API 是 OpenAI 提供的用于访问其大语言模型(如 GPT-3、GPT-4 等)的应用程序接口。通过这些API,开发者可以将自然语言处理能力集成到自己的应用中,实现诸如文本生成、对话、语言翻译等功能。OpenAI 的 API 通过一系列端点,让用户发送输入(prompt)并获得模型的输出(response)。

通过一些神秘方法获得OPENAI API后来看看下面两个代码分别展示了CHAT MODEL和TEXT MODEL 首先先介绍OPENAI API的调用参数 在调用OpenAI API时,开发者可以使用各种参数来定制化请求,从而控制模型生成文本的内容和风格。以下是关键参数的简要说明:

  1. model:指定所使用的模型类型,例如 text-davinci-003gpt-3.5-turbo 等。
  2. prompt:提示或问题的内容,告诉模型需要生成什么样的文本。
  3. temperature:用于控制生成文本的随机性。较高的值(如 0.8)会让输出更具多样性,较低的值(如 0.2)则让输出更确定。
  4. max_tokens:生成文本的最大长度,注意单位是Tokens。比如一个英文单词通常是一个Token。
  5. suffix:可以附加到模型生成的文本末尾的字符串。
  6. top_p:与temperature类似,但通过核采样控制生成的随机性。
  7. n:生成的候选响应数目,使用多个响应可以帮助选择最佳答案。
  8. stream:是否以流的方式输出生成的Tokens,如果为 true,会逐步返回结果。
  9. logprobs:请求输出的Token的概率信息。
  10. echo:设置为 true 时,返回的文本会包含请求中的输入内容。
  11. stop:设置一个或多个停止符号,当模型生成文本遇到这些符号时会停止。
  12. presence_penaltyfrequency_penalty:用于影响模型生成新信息的程度,可以提高生成多样性。
  13. best_of:生成最佳响应的数量,适用于在指定多个响应时。
  14. logit_bias:对指定Token的生成概率进行偏置处理。
  15. user:用于标识请求的用户,方便OpenAI进行监控和管理。

响应对象详解

OpenAI API 的响应对象包含了模型生成的输出和其他相关信息,通常包含以下主要字段:

  1. id:响应的唯一标识符。
  2. object:对象类型,通常为 text_completion
  3. created:生成响应的时间。
  4. model:生成响应所用模型的名称。
  5. choices:包含所有生成的输出,列表的每一项对应一个生成的结果。
  6. usage:包含关于Token使用的统计信息,如提示的Token数量(prompt_tokens)、生成的Token数量(completion_tokens)以及总Token数量(total_tokens)。

在代码中,你可以通过 response.choices[0].text.strip() 来获取第一个生成的文本,并移除前后的空白符号。

CHAT MODEL

聊天模型,用于产生人类和AI之间的对话。

"""
本文件是【LangChain系统安装和快速入门】章节的配套代码,课程链接:https://juejin.cn/book/7387702347436130304/section/7388069981520724003
您可以点击最上方的“运行“按钮,直接运行该文件;更多操作指引请参考Readme.md文件。
"""
import os
from openai import OpenAI

# os.environ["OPENAI_API_KEY"] = '你的OpenAI API Key'
# os.environ["OPENAI_BASE_URL"] = 'OpenAI 的 API URL'

client = OpenAI()

# text = client.invoke("请给我写一句情人节红玫瑰的中文宣传语")
response = client.chat.completions.create(
    model=os.environ.get("LLM_MODELEND"),
    messages=[
        {"role": "system", "content": "You are a creative AI."},
        {"role": "user", "content": "请给我的花店起个名"},
    ],
    temperature=0.8,
    max_tokens=600,
)

print(response.choices[0].message.content)

在这段代码中,除了 temperaturemax_tokens 等参数,还有两个专属于 Chat 模型的概念:消息(messages)和角色(role)。

  • 消息(messages) :传入模型的提示,通常是一个包含多个消息的列表。每个消息都有一个角色(role)和内容(content)。

    • 角色(role)可以是 systemuserassistant
    • system 设定对话背景(例如 "你是一个很棒的智能助手")。
    • user 是用户发出的请求(例如 "请给我的花店起个名")。
    • assistant 是模型的回复,用于提供先前对话的上下文。

生成的响应对象会包含一个或多个 choices,每个 choice 包含一个 message,而 message 也有 rolecontent 两个字段。 下面是回复的结果: image.png Chat模型和Text模型都有各自的优点,其适用性取决于具体的应用场景。

  • Chat模型 更适合处理多轮交互对话的情况。它可以接受一个消息列表作为输入,包含 systemuserassistant 的历史信息,这样模型在生成回复时可以参考更多上下文信息。
  • Text模型 更简单直接,适用于单轮文本生成任务。如果你只需要模型根据一个简单的提示生成一段文本,那么使用Text模型会更适合。

通过 LangChain 调用 Text 和 Chat 模型

Text Model

代码示例:

"""
本文件是【LangChain系统安装和快速入门】章节的配套代码,课程链接:https://juejin.cn/book/7387702347436130304/section/7388069981520724003
您可以点击最上方的“运行“按钮,直接运行该文件;更多操作指引请参考Readme.md文件。
"""
import os
from langchain_openai import ChatOpenAI

# os.environ["OPENAI_API_KEY"] = '你的OpenAI API Key'
# os.environ["OPENAI_BASE_URL"] = 'OpenAI 的 API URL'


llm = ChatOpenAI(
    model=os.environ.get("LLM_MODELEND"),
    temperature=0.8,
    max_tokens=600,
)
response = llm.predict("请给我的花店起个名")

print(response)

输出结果为:

image.png

CHAT Model

代码示例:

"""
本文件是【LangChain系统安装和快速入门】章节的配套代码,课程链接:https://juejin.cn/book/7387702347436130304/section/7388069981520724003
您可以点击最上方的“运行“按钮,直接运行该文件;更多操作指引请参考Readme.md文件。
"""
import os
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage

# os.environ["OPENAI_API_KEY"] = '你的OpenAI API Key'
# os.environ["OPENAI_BASE_URL"] = 'OpenAI 的 API URL'

chat = ChatOpenAI(model=os.environ.get("LLM_MODELEND"), temperature=0.8, max_tokens=600)

messages = [
    SystemMessage(content="你是一个很棒的智能助手"),
    HumanMessage(content="请给我的花店起个名"),
]
response = chat(messages)
print(response)

输出结果如下:

image.png