使用Python和Flask编写OpenAI集成代码

Find AI Tools
No difficulty
No complicated process
Find ai tools

使用Python和Flask编写OpenAI集成代码

目录

  1. 介绍
  2. Lang Chain:与Open AI模型交互的Python库
  3. Lang Chain提供的模块
  4. Prompt工程
  5. 交互式世界地图应用
  6. 如何开始
  7. 使用Flask构建服务器
  8. 向模型发送请求
  9. Prompt工程技术
  10. Prompt模板类
  11. 基于长度的示例选择器
  12. 构建完整提示
  13. 与Flask端点集成
  14. 应用示例:世界地图应用
  15. 结论

介绍

在本视频中,我们将介绍如何通过名为Lang Chain的Python库与Open AI模型进行交互。Lang Chain是一个工具,使得与Open AI模型的交互变得更加简单。我们将探讨Lang Chain的模块以及如何应用它们。这个视频对于解开当前人工智能热潮背后AI应用的迷雾非常重要,因为它展示了Prompt工程技术的简单应用。

Lang Chain:与Open AI模型交互的Python库

Lang Chain是一个Python库,用于与Open AI模型进行交互。它提供了一组模块,用于配置并发送请求到AI模型,以获取自然语言处理的结果。

Lang Chain提供的模块

Lang Chain提供了多个模块,包括:Prompt模块和Interactive World Map模块。这些模块为使用Lang Chain进行交互提供了所需的功能和便利。在本视频中,我们将重点介绍Prompt模块的使用。

Prompt工程

Prompt工程是一种经常被称为Prompt工程的技术。在本视频中,我们将演示这种不复杂且实际上更像是一种艺术的技术。我们将展示一个与用户互动的世界地图应用,该应用可以根据任意查询在地图上展示相关的位置信息。只需问任何问题,我们使用的模型将能够在地图上绘制与查询相关的位置。例如,你可以问“非洲最热门的城市是哪些?”或者“巴西最好的海鲜在哪里?”如果Expedia或Travelocity有类似的需求,可以随时与我联系。

交互式世界地图应用

本视频的重点是展示Prompt工程技术的简单应用。我们将创建一个交互式世界地图应用,该应用可以根据用户的查询,在地图上标注相关的地理位置信息。每个标注点将包含经度、纬度和简短描述。描述还将包括有关该城市或地区环境问题的信息。应用要求每次查询返回的标注点数量不超过三个,且整个回答的长度不超过500个字符。

如何开始

首先,你需要创建一个Open AI帐号,并获取一个API密钥,用于验证你的模型请求。API密钥用于Open AI跟踪每个用户对模型的使用情况,并限制每个用户的使用量。我们将使用Flask来构建我们的服务器,并使用Lang Chain库与模型进行交互。

使用Flask构建服务器

我们将使用Flask来构建我们的服务器。在项目文件夹中,我们使用Poetry来进行包管理。在项目文件夹中,你还可以找到一个.env文件,该文件用来存储Open AI的API密钥。

在终端中运行Flask服务器,并使用curl发起请求,以测试我们的服务器和端点。

向模型发送请求

在Flask端点的控制器中,我们实例化了一个LLM(Large Language Model)对象,该对象允许我们调整模型的配置参数。我们可以传入一个0到1的温度参数来控制响应的随机性。温度越接近0,响应越不随机,意味着如果我们连续发送相同的请求,我们应该得到完全相同的响应。温度越接近1,响应越随机。我们可以选择使用哪个模型,例如GPT 3.5 Turbo是大家最熟悉的模型。

我们将使用代码向模型发送请求。运行Flask服务器,并使用curl发起请求,触发模型的响应。

Prompt工程技术

在本步骤中,我们开始介绍Prompt工程技术。你会发现,Prompt工程实际上就是字符串模板。我们现在在提示前面添加了一段文本,“请以唐纳德·特朗普的方式回答以下查询”。这就是Prompt工程的全部。通过对字符串模板进行创新,我们可以实现Prompt工程。

让我们测试一下吧。现在,我们得到的提示是“一个橙子是什么颜色”,应该回答“橙子是橙色”。因为我们更改了模板,之前的回答是“橙子是橙色”,而现在我们改为“没有人比我更了解橙子...橙子的颜色就是橙色”。

另外,我们还通过添加一个名为Prompt Template Class的附加类,保持了这一步骤的简便性。该类允许我们重用提示,以便在将来的请求中提供更多上下文。通过在提示中包含一些示例以及对这些示例的预期响应,我们可以让模型更好地理解我们的意图。这就是所谓的Few-Shot Prompt Templating。这些概念都很简单,只是一些术语而已。

基于长度的示例选择器

正如OpenAI的文档中所述,每分钟你可以发送的请求和标记数量是有限制的。为了满足这些限制,我们引入了一个名为Length-Based Example Selector的帮助类。它可以限制在最终提示中包含的示例数量。使用这个类,我们可以限制包含在最终提示中的标记数量。

构建完整提示

现在,所有的东西都开始有了联系。我们创建了一个Few-Shot Prompt Template Class,将所有内容组合起来构建最终提示。在这个测试中,你将看到我们要在同一个提示中两次格式化字符串,每个字符串都有两个例子查询及其对应的响应。Prompt工程的目标就是这样。

与Flask端点集成

现在,我们将所有的代码与Flask端点集成起来,以便能够在请求的同一终端中接收模型的响应。先运行Flask服务器,然后使用curl发起请求,我们应该能够在同一个终端中收到响应。

应用示例:世界地图应用

接下来,我将把示例代码从Donald Trump的AI应用更改为交互式世界地图应用所需的提示。下面是我设计的提示:

“你能够以Json格式返回与任意查询相关的地理对象数组吗?每个对象在数组中应包含三个键:经度(Lon)、纬度(Lat)和简述(Blurb)。Lon表示经度,Lat表示纬度,Blurb是对查询的简短回答,同时包含该坐标所在城市或地区的环境问题信息。数组的最大长度为三个对象,总长度不超过500个字符。请通过运行我们的Flask服务器来测试这个示例。”

运行Flask服务器并进行测试。发送第一个查询:查询“世界上最伟大的国家是哪个?”等待LLM或模型回复。

发送第二个查询:“美国最热门的城市有哪些?”等待模型回复。

结论

通过本视频,你可以学到如何使用Lang Chain库与Open AI模型进行交互,并了解到Prompt工程的基本概念。我们还演示了如何构建一个交互式世界地图应用。此外,我们还讨论了Flask服务器和模型请求的集成。希望这个视频对你有所帮助,你可以根据你的需要对代码进行修改和扩展。


FAQ

Q: Prompt工程技术有什么作用? A: Prompt工程技术可以帮助我们通过对字符串模板进行创新,实现对模型的具体指导,从而获得更精确、有针对性的响应。

Q: 如何限制请求的数量和标记数量? A: OpenAI规定了每分钟请求和标记的数量限制。使用Length-Based Example Selector类可以限制在最终提示中包含的示例数量,以满足这些限制。

Q: 如何将Lang Chain与Flask端点集成? A: 首先,你需要通过Flask构建一个服务器,并在控制器中实例化LLM对象以及其他所需组件。然后,将代码与Flask端点集成,并进行测试。

Q: 世界地图应用中的查询是否准确? A: 与所有人工智能模型一样,LLM模型的输出结果取决于其训练数据。如果训练数据不准确或有偏,模型输出的结果也可能不准确。因此,需要对输出结果进行验证和审查。

Q: 是否可以以更多地理对象的形式返回查询结果? A: 在世界地图应用中,我们限制了返回的数组长度为三个地理对象,以确保响应内容的可读性。如果需要返回更多结果,可以相应地调整代码。

资源

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.