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

news2024/9/29 9:24:23

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模型

在这里插入图片描述
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1242544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟机解决Linux中Uos和Deepin登录密码忘记的问题 标题Linux Uos Deepin

Uos是切换网络模式解决的(之前有绑定过用户) 因为之前用的是桥接模式登录的时候一直无法联网,改为Nat模式后可以和电脑共用一个网络ip,可以重置密码了,以此解决 ps: 特别说明rw single init/bin/bash 方法和systemd.debug-shell1方法已经失效,不要再做无谓的尝试了Deepin23社区…

人工智能:一种现代的方法 第十四章 概率推理

文章目录 人工智能&#xff1a;一种现代的方法 第十四章 概率推理本章前言14.1 不确定性问题域中的知识表示14.1.1 联合概率分布14.1.2贝叶斯网络 14.2 贝叶斯网络的语义14.2.1表示联合概率分布14.2.2 紧致性14.2.3 节点排序14.2.4 贝叶斯网络中的条件独立关系14.3 条件分布的有…

痤疮分级实验笔记-ResNet

组织数据集 方式1&#xff1a;根据txt文件分类的数据集组织形式&#xff08;放弃&#xff09; 你可以使用Python来读取txt文件中的训练集图片信息&#xff0c;并将这些图片从原始文件夹复制到目标文件夹中。 当程序无法找到标签对应的图片或者目标文件夹中已经存在同名图片时…

IT支持团队的绩效指标和最佳实践

一名员工在远程时因笔记本问题寻求IT支持&#xff0c;尽管他们多次尝试排除故障&#xff0c;但由于缺乏专业知识&#xff0c;最终还是无法访问工作所需的应用程序。这时&#xff0c;他们需要一名专业的 IT 技术人员来指导他们&#xff0c;但他们只能等待有人注意到并回应他们的…

BMS基础知识:BMS基本功能,铅酸和锂电池工作原理,电池系统的重要概念!

笔者有话说&#xff1a; 作为BMS从业者来讲&#xff0c;目前接触的BMS系统并不是很高大尚&#xff0c;但基础功能都是有的。 关于BMS的基本功能&#xff0c;工作原理&#xff0c;运行逻辑等&#xff0c;在此做一个梳理&#xff0c;讲一些最基础的扫盲知识&#xff0c;可以作为…

安全牛《数据分类分级自动化建设指南》发布|美创入选代表厂商,分享智能化探索

近日&#xff0c;安全牛发布《数据分类分级自动化建设指南》研究报告&#xff0c;对数据分类分级的主要技术、实施要点、选型指导、发展趋势等展开深入探讨&#xff0c;为各行业数据分类分级自动化工作落地提供帮助与指引。 美创科技被列为代表推荐厂商&#xff0c;落地案例—农…

Flutter:引领移动开发新潮流,跨平台应用程序的终极解决方案

文章目录 一、介绍二、环境搭建三、基础组件四、生命周期管理五、路由控制六、网络请求七、数据存储八、调试与优化《从零基础到精通Flutter开发》特色内容简介作者简介目录获取方式 一、介绍 Flutter是由Google开发的一款开源移动应用开发框架&#xff0c;它可以帮助开发者快…

PS给图片增加一个白色边框。

问题描述&#xff1a;PS如何给图片增加一个白色边框&#xff1f; 解决办法&#xff1a; 第一步&#xff1a;使用shiftAltA快捷键&#xff0c;在图片四周拉出一个灰白色的边框。如下图所示&#xff1a; 第二步&#xff0c;使用快捷键Ctrlshiftn新建一个图层。 并把新建的图层…

C语言——利用函数递归,编写函数不允许创建临时变量,求字符串长度

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int my_strlen(char* str) {if(*str ! \0)return 1my_strlen(str1);elsereturn 0; }int main() {char arr[] "hello";int len my_strlen(arr); //arr是数组&#xff0c;数组传参&#xff0c;传过去的是第…

推荐一款png图片打包plist工具pngPackerGUI_V2.0

png图片打包plist工具&#xff0c;手把手教你使用pngPackerGUI_V2.0 此软件是在pngpacker_V1.1软件基础之后&#xff0c;开发的界面化操作软件&#xff0c;方便不太懂命令行的小白快捷上手使用。1.下载并解压缩软件&#xff0c;得到如下目录&#xff0c;双击打开 pngPackerGUI.…

【广州华锐互动】VR线上课件制作软件满足数字化教学需求

随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术在教学领域的应用逐渐成为趋势。其中&#xff0c;广州华锐互动开发的VR线上课件制作软件更是备受关注。这种工具为教师提供了便捷的制作VR课件的手段&#xff0c;使得VR教学成为可能&#xff0c;极大地丰…

2.4G射频收发芯片 XL2407P芯片介绍,集成九齐单片机

XL2407P芯片是工作在2.400~2.483GHz世界通用ISM频段,集成微控制器的的SOC无线收发芯片。该芯片集成射频收发机、频率收生器、晶体振荡器、调制解调器等功能模块,并且支持一-对多组网和带ACK的通信模式。发射输出功率、工作频道以及通信数据率均可配置。 芯片内含以EPROM作为内…

HTML5+ API 爬坑记录

背景: 有个比较早些使用5开发的项目, 最近两天反馈了一些问题, 解决过程在此记录; 坑1: plus.gallery.pick 选择图片没有进入回调 HTML5 API Reference 在 联想小新 平板电脑上选择相册图片进行上传时, 打开相册瞬间 应用会自动重启, 相册倒是有打开, 不过应用重启了, 导…

Ajax技

Ajax的特点 异步提交&#xff1a;Ajax采用异步通信方式&#xff0c;能够在页面无需重新加载的情况下向服务器发送请求并接收响应数据&#xff0c;提升了用户体验。无需插件&#xff1a;Ajax是基于标准浏览器的Javascript和XMLHttpRequest对象实现的&#xff0c;无需安装插件或…

HBase之Slow log

目录 Slow log记录条件日志示例配置内存存储配置表存储 Slow log hbase会记录慢查询日志&#xff0c;关键字包括responseTooSlow、responseTooLarge、operationTooSlow、and operationTooLarge。 记录条件 响应时间和响应的数据大小可由以下参数配置 hbase.ipc.warn.respon…

大型养殖场需要哪些污水处理设备

大型养殖场是一个涉及环境保护和可持续发展的关键行业&#xff0c;对于处理养殖场产生的污水有着明确的要求和标准。为了确保污水得到有效处理和处理效果达到国家排放标准&#xff0c;大型养殖场需要配备一系列污水处理设备。以下是几种常见的污水处理设备&#xff1a; 1. 水解…

安卓手机便签APP用哪个,手机上好用的便签APP是什么

在日常生活及工作方面&#xff0c;总是有许多做不完的事情需要大家来处理&#xff0c;当多项任务堆叠交叉在一起时&#xff0c;很容易漏掉一些项目&#xff0c;这时候大家会借助经常携带的手机来记录容易忘记的事情&#xff0c;如手机上的闹钟、定时提醒软件都可以用来记录待办…

三、Keil安装芯片包、下载固件库、建立STM32工程模板

目录 一、首先在Keil软件上安装好芯片包 二、下载官方固件库 三、建立基于固件库的Keil5工程模板 一、首先在Keil软件上安装好芯片包 STM32有很多系列的芯片&#xff0c;我们平常用的最多的是STM32F1系列的&#xff0c;因此安装F1系列的芯片包在我们初学时&#xff0c;只按照…

分页符 分页

【插入】---【分页符】 目录和一级标题得新起一页

java--static的注意事项

1.使用类方法、实例方法时的几点注意事项 ①类方法中可以直接访问类的成员&#xff0c;不可以直接访问实例成员。 ②实例方法中既可以直接访问类成员&#xff0c;也可以直接访问实例成员。 ③实例方法中可以出现this关键字&#xff0c;类方法中不可以出现this关键字的。