什么是langchain
随着aigc的火热,各大厂商开始提供他们自己的api服务,诸如openai、google、等,还有的直接开源出自己的模型,放到Huggingface提供使用,而LangChain就是一个基于语言模型开发应用程序的框架,它可以很方便的去调用不同公司的api,以及huggingface的资源,为人们提供统一的开发标准,降低开发难度。
langchain的宗旨和特色
在以上的描述中,不管langchain调用了什么api,它也只能发挥api本身的功能,那langchain的最大特色是什么是?官方表示langchain的最大特色有两点:数据感知(Be data-aware)和主动性(Be agentic)
数据感知(Be data-aware)
将语言模型与其他数据源连接起来,使其能够利用外部数据来增强其知识和理解能力。语言模型可以通过访问和分析结构化数据、非结构化数据、实时数据流等来获取更多信息,以便更好地回答问题、提供准确的信息和指导。
主动性(Be agentic)
赋予语言模型主动与其环境交互的能力。传统的语言模型通常是被动的,只在接收到输入时生成输出。但是,赋予语言模型主动性意味着它可以主动提出问题、请求进一步的信息或反馈,与用户或环境进行双向的对话和交互。这使得语言模型更加灵活和适应性强,能够更好地满足用户的需求。
lagnchain的组成特征
以上的描述可以知道,langchain开发了一套统一的开发标注,它提供了三个大的基本功能:
- 第三方平台的语言模型的调用功能;
- 和其他数据源的交互功能;
- 主动发问的功能;
为了提供以上的功能,langchain以组件化的形式来提供最基础的能力,然后通过链的方式来完成具体的业务实现。
组件
LangChain提供了模块化抽象,用于处理与语言模型相关的组件。LangChain还提供了这些抽象的多种实现。这些组件其实和scikit-learn是很像的,每一个小组件就是一个独立的功能。我们先大致看一下langchain都有哪一些组件:
- Schema :数据结构相关功能
- Models :模型相关功能
- Prompts :模型输入的数据结构功能
- Indexes :与其他数据交互的功能
- Memory :通过上下文保持,提供模型记忆功能
- Chains :将多个组件组合起来,自动化实现某一个业务功能
- Agents :langchain提供的主动性功能
黑色加粗的就是langchain的特色所在。
链(chains)
链可以被视为以特定方式组装这些组件,类似于scikit-learn的pipline,他就是依据你具体想要解决的问题,将你想要的组件组装到一起。然后自动化的执行。这个功能是有chains来提供。
案例
下面我们就一步一步的来晚上一个机器人对话系统
# -*- coding: utf-8 -*-
"""
auther : leon
time : 2023-06-26
"""
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="sk-9Sjd71sMuHHvKhqUSZmue6vJD",temperature=0.9)
end_pred = llm.predict("What would be a good company name for a company that makes colorful socks?")
print(end_pred)
上面的代码中
- 导入OpenAI的库,因为我们要调用chatgpt 的api
- 创建语言模型OpenAI的模型,这里最主要是就是指定openai_api_key的参数,这个key是你注册了openai之后,然后在https://platform.openai.com/account/api-keys去生成的一个key。
- 调用模型的predict方法
注:我的key已经被我删掉部分信息,你需要用你的key,同时要科学上网。文章来源:https://www.toymoban.com/news/detail-692456.html
添加for循环
# -*- coding: utf-8 -*-
"""
auther : leon
time : 2023-06-26
"""
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="sk-9Sjd71sMu7A8OSAHHqZmue6vJD", temperature=0.9)
while True:
user_input = input("Enter your input (or 'q' to quit): ")
if user_input.lower() == "q":
break
end_pred = llm.predict(user_input)
print(end_pred)
这就是一个最初版的对话机器人,在这机器人中我们并没有用到prompt模块,也没用schema、chains、agent。后续再细细讲解。文章来源地址https://www.toymoban.com/news/detail-692456.html
到了这里,关于langchain系列:langchain入门(一分钟搞定对话机器人)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!