免费OpenAI API Key的获取
因为OpenAI需要科学上网,并且需要支付一定的费用。这里提供一个免费获取的链接。点我免费获取
import os
import openai
openai.api_key = "您的APIKEY"
openai.base_url = "https://free.v36.cm/v1/"
openai.default_headers = {"x-foo": "true"}
completion = openai.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{
"role": "user",
"content": "Hello world!",
},
],
)
print(completion.choices[0].message.content)
# 正常会输出结果:Hello there! How can I assist you today ?
我的结果如下:
本地环境配置
1. 去下载课程代码,使用Pycharm打开
2. 建立虚拟环境
我这里使用的minconda,打开Anaconda Prompt,新建立一个虚拟环境,我这里使用的版本是python3.9(3.8的环境不适合v2.0版本的)。在pycharm中加载我们创建好的虚拟环境,我这里名字叫做py39。
打开终端,可以先进入requirements.txt文件所在路径,然后安装requirements.txt里的环境,我这里选择的是2.0版本的,命令如下:
cd C:\Users\Ztt15\Desktop\langchain-in-action-main\langchain-in-action-main # 路径换成你的requirements
pip install langchain-openai
pip install langchain-community
# pip install openai
# pip install -r requirements_v0.2.txt
环境搭载好之后,将初始化模型改为如下形式(其他课程代码同理):
# 01_SimpleTextGeneration.py
# 载入库
from langchain_openai import ChatOpenAI
# 初始化语言模型
llm = ChatOpenAI(
openai_api_key="sk-*******************************************8f3f",
openai_api_base="https://free.v36.cm/v1/",
model="gpt-3.5-turbo"
)
# 发送请求
text = llm.predict("请给我写一句情人节红玫瑰的中文宣传语")
print(text)
LangChain入门
LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它使得应用程序能够:
- 具有上下文感知能力:将语言模型连接到上下文来源(提示指令,少量的示例,需要回应的内容等)
- 具有推理能力:依赖语言模型进行推理(根据提供的上下文如何回答,采取什么行动等)
这个框架由几个部分组成。
- LangChain 库:Python 和 JavaScript 库。包含了各种组件的接口和集成,一个基本的运行时,用于将这些组件组合成链和代理,以及现成的链和代理的实现。
- LangChain 模板:一系列易于部署的参考架构,用于各种任务。
- LangServe:一个用于将 LangChain 链部署为 REST API 的库。
- LangSmith:一个开发者平台,让你可以调试、测试、评估和监控基于任何 LLM 框架构建的链,并且与 LangChain 无缝集成。
构建应用程序
现在我们可以开始构建语言模型应用程序了。LangChain提供了许多可以用来构建语言模型应用程序的模块。这些模块可以作为简单应用程序中的独立模块使用,也可以组合在一起用于更复杂的用例。
LangChain应用程序的核心构建模块是LLMChain。它结合了三个方面:
- LLM: 语言模型是核心推理引擎。要使用LangChain,您需要了解不同类型的语言模型以及如何使用它们。
- Prompt Templates: 提供语言模型的指令。这控制了语言模型的输出,因此了解如何构建提示和不同的提示策略至关重要。
- Output Parsers: 将LLM的原始响应转换为更易处理的格式,使得在下游使用输出变得容易。
在本入门指南中,我们将逐个介绍这三个组件,然后介绍将它们组合在一起的LLMChain。了解这些概念将使您能够很好地使用和定制LangChain应用程序。大多数LangChain应用程序允许您配置LLM和/或使用的提示,因此了解如何利用这一点将是一个很好的帮助。
LLMs
LangChain中有两种类型的语言模型,称为:
- LLMs: 这是一个以字符串作为输入并返回字符串的语言模型
- ChatModels: 这是一个以消息列表作为输入并返回消息的语言模型
LLMs的输入/输出简单易懂 - 字符串。但是ChatModels呢?那里的输入是一个ChatMessage列表,输出是一个单独的ChatMessage。 一个ChatMessage具有两个必需的组件:
content: 这是消息的内容。role: 这是ChatMessage来自的实体的角色。
LangChain提供了几个对象,用于方便地区分不同的角色:
HumanMessage: 来自人类/用户的ChatMessage。AIMessage: 来自AI/助手的ChatMessage。SystemMessage: 来自系统的ChatMessage。FunctionMessage: 来自函数调用的ChatMessage。
如果这些角色都不合适,还可以使用ChatMessage类手动指定角色。有关如何最有效地使用这些不同的消息的更多信息,请参阅我们的提示指南。
LangChain为两者提供了一个标准接口,但了解这种差异以便为给定的语言模型构建提示非常有用。LangChain提供的标准接口有两种方法:
predict: 接受一个字符串,返回一个字符串predict_messages: 接受一个消息列表,返回一个消息。