LangChain学习 | 豆包MarsCode AI刷题

136 阅读4分钟

安装LangChain可以通过使用pip命令pip install langchain来完成。但请注意,如果你需要与其他工具集成,比如openai和chroma,你可能需要安装额外的依赖。为了包含常用的大型语言模型,推荐使用pip install langchain[llms]来安装。之后,可以通过pip install --upgrade langchain命令来确保LangChain保持最新版本。

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

在获得OpenAI API密钥后,以下是两个代码示例,分别展示了如何使用CHAT MODEL和TEXT MODEL。

首先,让我们来看一下OpenAI API调用时可以使用的参数:

  • model:选择使用的模型,例如text-davinci-003或gpt-3.5-turbo。
  • prompt:提供给模型的提示或问题,指导模型生成特定文本。
  • temperature:控制生成文本的创造性,较高值增加多样性,较低值减少创造性。
  • max_tokens:限制生成文本的最大长度,以Tokens为单位。
  • suffix:附加在生成文本后的字符串。
  • top_p:通过核采样控制生成的随机性。
  • n:生成候选响应的数量。
  • stream:是否以流的形式输出生成的Tokens。
  • logprobs:请求输出Token的概率信息。
  • echo:如果设置为true,返回的文本将包含输入内容。
  • stop:设置一个或多个停止符号,模型在生成文本遇到这些符号时将停止。
  • presence_penalty和frequency_penalty:影响模型生成新信息的程度。
  • best_of:在生成多个响应时,选择最佳响应的数量。
  • logit_bias:对特定Token的生成概率进行调整。
  • user:标识请求的用户,方便OpenAI进行监控和管理。

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

  • id:响应的唯一标识符。
  • object:对象类型,通常是text_completion。
  • created:响应生成的时间。
  • model:使用的模型名称。
  • choices:包含所有生成的输出,每个条目对应一个结果。
  • usage:包含Token使用情况的统计信息,如提示的Token数量、生成的Token数量和总Token数量。

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

CHAT MODEL适用于创建人类和AI之间的对话。以下是Python代码示例:

import os
from openai import OpenAI

# 设置环境变量
# os.environ["OPENAI_API_KEY"] = '你的OpenAI API Key'
# os.environ["OPENAI_BASE_URL"] = 'OpenAI 的 API URL'

client = OpenAI()

# 发送聊天请求
response = client.chat.completions.create(
    model=os.environ.get("LLM_MODELEND"),
    messages=[
        {"role": "system", "content": "你是一个有创意的AI。"},
        {"role": "user", "content": "请给我的花店起个名字。"},
    ],
    temperature=0.8,
    max_tokens=600,
)

# 打印响应内容
print(response.choices[0].message.content)

在这段代码中,除了temperature和max_tokens等参数外,还有两个与Chat模型相关的概念:消息(messages)和角色(role)。

  • 消息(messages):传入模型的提示,通常是一个包含多个消息的列表,每个消息都有一个角色(role)和内容(content)。
  • 角色(role):可以是system、user或assistant,分别用于设定对话背景、用户请求和模型回复。

生成的响应对象将包含一个或多个choices,每个choice包含一个message,而message也有role和content两个字段。

Chat模型和Text模型各有优势,适用于不同的应用场景。Chat模型适合处理多轮交互对话,可以接受一个包含system、user和assistant历史信息的消息列表作为输入,以便模型在生成回复时参考更多上下文信息。Text模型则更简单直接,适用于单轮文本生成任务,如果只需要模型根据一个简单的提示生成一段文本,使用Text模型会更合适。

通过LangChain调用Text和Chat模型:

Text Model的代码示例:

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)

CHAT Model的代码示例:

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)