LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain

LangChain系列文章

  1. LangChain 实现给动物取名字,
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
  4. LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
  5. LangChain 5易速鲜花内部问答系统
  6. LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型

LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain_第1张图片
Chat模型(如ChatGPT)和文本模型(如GPT-3或GPT-4)都是人工智能领域的重要技术,它们分别代表了两种不同的应用方式和功能。

1. Text Model(文本模型)

  • 定义与功能:文本模型专注于理解和生成文本。这些模型在处理、分析和生成自然语言文本方面非常高效。
    • 特点:
    • 多功能性:能够执行多种任务,如文本生成、翻译、摘要、问答等。
    • 大数据训练:通常使用大量文本数据进行训练,以理解广泛的主题和语境。
  • 举例:OpenAI的GPT-3和GPT-4是最知名的文本模型。这些模型通过使用大规模的数据集训练,获得了对自然语言的深入理解。

1.1 Text Model代码实现text_model.py

# 导入Langchain库中的OpenAI模块,该模块提供了与OpenAI语言模型交互的功能
from langchain.llms import OpenAI  

# 导入Langchain库中的PromptTemplate模块,用于创建和管理提示模板
from langchain.prompts import PromptTemplate  

# 导入Langchain库中的LLMChain模块,它允许构建基于大型语言模型的处理链
from langchain.chains import LLMChain  

# 导入dotenv库,用于从.env文件加载环境变量,这对于管理敏感数据如API密钥很有用
from dotenv import load_dotenv  

# 导入openai库,以便使用OpenAI提供的API
import openai

# 调用load_dotenv函数来加载.env文件中的环境变量
load_dotenv()  

# 使用openai库中的Completion.create方法调用GPT-3模型
# 指定模型为text-davinci-003,温度设置为0.5以控制创造性,最大令牌数为100
# 提供的提示是,用于生成公司名称
response = openai.Completion.create(
    model="text-davinci-003",
    temperature=0.5,
    max_tokens=100,
    prompt="请给我的硅谷AI科技公司起个有创新的名字,可以参考OpenAI,DeepMind,Google,Facebook等等")

# 打印响应中的文本,去除首尾的空格
print(response.choices[0].text.strip())

运行代码

zgpeaces-MBP at ~/Workspace/LLM/langchain-llm-app ±(feature/textAndChat) ✗ ❯ python text_model.py
1. MindCore
2. AIForge
3. AIStorm
4. BrainBoost
5. IntelliTech
6. SmartLogic
7. CleverMind
8. AIExplorer
9. CognitiveLogic
10. BrainTech

1.2 TextLangChain 实现

# 导入Langchain库中的OpenAI模块,该模块提供了与OpenAI语言模型交互的功能
from langchain.llms import OpenAI  

# 导入Langchain库中的PromptTemplate模块,用于创建和管理提示模板
from langchain.prompts import PromptTemplate  

# 导入Langchain库中的LLMChain模块,它允许构建基于大型语言模型的处理链
from langchain.chains import LLMChain  

# 导入dotenv库,用于从.env文件加载环境变量,这对于管理敏感数据如API密钥很有用
from dotenv import load_dotenv  

# 调用load_dotenv函数来加载.env文件中的环境变量
load_dotenv()  


# 使用OpenAI类创建一个名为llm的实例。这个实例配置了用于生成文本的模型参数。
# 模型使用的是"text-davinci-003",这是一个高级的GPT-3模型。
# temperature设置为0.8,这决定了生成文本的随机性和创造性。
# max_tokens设置为60,限制生成文本的最大长度。
llm = OpenAI(
    model="text-davinci-003",
    temperature=0.8,
    max_tokens=60
)

# 使用llm实例的predict方法生成文本。这里的输入是一个提示,要求生成一个创新的硅谷AI科技公司的名字,
# 并提供了OpenAI、DeepMind、Google、Facebook等公司作为参考。
response = llm.predict("请给我的硅谷AI科技公司起个有创新的名字,可以参考OpenAI,DeepMind,Google,Facebook等等")

# 打印生成的响应文本,去除首尾的空格。
print(response)

运行代码

zgpeaces-MBP at ~/Workspace/LLM/langchain-llm-app ±(feature/textAndChat) ✗ ❯ python text_lang_chain.py

1. CleverMinds
2. AIWorker
3. Mindscape
4. IntelliBots
5. AI Thinkers
6. CognitiveCore
7. CreativeMinds
8. QuantumMinds
9. AI Innovators

2. Chat Model(对话模型)

  • 定义与功能:对话模型专注于生成人类风格的对话。这类模型通常被训练来理解和生成自然语言,使它们能够与用户进行互动式对话。
    • 特点:
    • 上下文理解:它们能够记住前面的对话内容,从而在对话中保持连贯性。
    • 多样性应用:广泛应用于客户服务、虚拟助手、娱乐性聊天机器人等。
  • 举例:OpenAI的ChatGPT是一个典型的对话模型。它基于GPT-3.5或GPT-4的架构,增加了对话管理能力,使其能够更流畅地进行长对话。

OpenAI 作为例子

  • 技术发展:OpenAI在这两种模型的发展上都取得了显著成就。它们的模型不仅理解和生成自然语言,还能适应各种复杂的任务和应用。
  • 创新应用:例如,ChatGPT结合了GPT-3或GPT-4的强大文本生成能力和优化的对话管理技术,提供了一种新颖的交互方式。
  • 社会影响:OpenAI的这些模型对社会产生了深远影响,改变了人们与技术的互动方式,同时也引发了关于人工智能伦理和可控性的讨论。
    总的来说,Chat模型和文本模型各有特点,但都在AI领域中扮演着关键角色。OpenAI通过这些模型展示了AI技术的强大潜力和广泛应用前景。

2.1 ChatModel 代码实现chat_model.py

# 导入Langchain库中的OpenAI模块,该模块提供了与OpenAI语言模型交互的功能
from langchain.llms import OpenAI  

# 导入Langchain库中的PromptTemplate模块,用于创建和管理提示模板
from langchain.prompts import PromptTemplate  

# 导入Langchain库中的LLMChain模块,它允许构建基于大型语言模型的处理链
from langchain.chains import LLMChain  

# 导入dotenv库,用于从.env文件加载环境变量,这对于管理敏感数据如API密钥很有用
from dotenv import load_dotenv  

# 导入openai库,以便使用OpenAI提供的API
import openai

# 调用load_dotenv函数来加载.env文件中的环境变量
load_dotenv()  

# 使用OpenAI的ChatCompletion接口创建一个响应。这个接口特别适合生成对话式的内容。
# 模型使用的是"gpt-3.5-turbo",一种适用于快速响应和对话生成的GPT-3.5模型。
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    # messages是一个列表,包含与AI进行交互的信息。
    # 第一条信息定义了AI的角色,这里它被指定为一个“创意AI”。
    # 第二条信息是用户输入,要求AI为一家硅谷AI科技公司起一个创新的名字,参考OpenAI, DeepMind等。
    messages=[
        {"role": "system", "content": "You are a creative AI."},
        {"role": "user", "content": "请给我的硅谷AI科技公司起个有创新的名字,可以参考OpenAI,DeepMind,Google,Facebook等等"},
    ],
    # 设置温度为0.7,控制生成内容的创造性。
    temperature=0.7,
    # 设置最大令牌数量为60,限制响应的长度。
    max_tokens=60
)

# 打印从响应中获取的文本内容,去除首尾的空格。
# response是一个字典,其中'choices'包含了生成的内容。
print(response['choices'][0]['message']['content'])

# 打印完整的response.choices,以查看所有生成的选项。
print(response.choices)


运行代码

zgpeaces-MBP at ~/Workspace/LLM/langchain-llm-app ±(feature/textAndChat) ✗ ❯ python chat_model.py 
当然!以下是几个有创新的硅谷AI科技公司的命名建议:

1. NexusAI
2. SynthetixTech
3. CogniVerse
4. NeuroGenius
5. EvolvAI
6
[<OpenAIObject at 0x1177ee390> JSON: {
  "index": 0,
  "message": {
    "role": "assistant",
    "content": "\u5f53\u7136\uff01\u4ee5\u4e0b\u662f\u51e0\u4e2a\u6709\u521b\u65b0\u7684\u7845\u8c37AI\u79d1\u6280\u516c\u53f8\u7684\u547d\u540d\u5efa\u8bae\uff1a\n\n1. NexusAI\n2. SynthetixTech\n3. CogniVerse\n4. NeuroGenius\n5. EvolvAI\n6"
  },
  "finish_reason": "length"
}]

2.2 ChatLangChain 代码实现chat_lang_chain.py

# 导入Langchain库中的OpenAI模块,该模块提供了与OpenAI语言模型交互的功能
from langchain.llms import OpenAI  

# 导入Langchain库中的PromptTemplate模块,用于创建和管理提示模板
from langchain.prompts import PromptTemplate  

# 导入Langchain库中的LLMChain模块,它允许构建基于大型语言模型的处理链
from langchain.chains import LLMChain  

# 导入dotenv库,用于从.env文件加载环境变量,这对于管理敏感数据如API密钥很有用
from dotenv import load_dotenv  

# 导入Langchain库中的ChatOpenAI类,用于创建和管理OpenAI聊天模型的实例。
from langchain.chat_models import ChatOpenAI

# 调用dotenv库的load_dotenv函数来加载.env文件中的环境变量。
# 这通常用于管理敏感数据,如API密钥。
load_dotenv()  

# 创建一个ChatOpenAI实例,配置它使用gpt-3.5-turbo模型,
# 设定温度参数为0.7(控制创造性的随机性)和最大令牌数为60(限制响应长度)。
chat = ChatOpenAI(
    model="gpt-3.5-turbo",
    temperature=0.7,
    max_tokens=60
)

# 导入langchain.schema模块中的HumanMessage和SystemMessage类。
# 这些类用于创建符合特定格式的消息,以便ChatOpenAI类能正确处理。
from langchain.schema import (
    HumanMessage,
    SystemMessage
)

# 创建一个包含两条消息的列表:一条系统消息和一条人类消息。
# 系统消息定义了AI的角色(创意AI),而人类消息包含了用户的请求(为公司起名)。
messages = [
    SystemMessage(content="You are a creative AI."),
    HumanMessage(content="请给我的硅谷AI科技公司起个有创新的名字,可以参考OpenAI,DeepMind,Google,Facebook等等")
]

# 使用chat实例处理这些消息,并将结果存储在response变量中。
response = chat(messages)

# 打印响应内容。
print(response)


zgpeaces-MBP at ~/Workspace/LLM/langchain-llm-app ±(feature/textAndChat) ✗ ❯ python chat_lang_chain.py
content='当然,我可以帮你起一个有创新的硅谷AI科技公司的名字。以下是几个建议:\n\n1. SynapseTech(突触科技):突触是神经元之间'

代码

  • https://github.com/zgpeace/pets-name-langchain/tree/feature/textAndChat

你可能感兴趣的:(LLM-Large,Language,Models,langchain,prompt,chatgpt,LLM)