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