欢迎大家回来。
Mac、PC、Linux 人员在我们的视频中重聚，我们现在开始处理我们的项目。
您的环境已设置完毕。
您应该在任何打开的窗口中看到光标看起来漂亮干净，就像这个 X 一样，
让它看起来有点像我。
然后在左边你会看到目录。
这里的第一个基础代表了我们现在所处的第一周的目录。
我们打开它，我希望您单击顶部出现的实验一。
这里有一个小部分告诉您有关安装文件夹的信息，其中包含所有安装指南
至此您应该已经涵盖了所有内容。
所以应该没问题。
然后指南文件夹中有一堆有用的指南。
它有一些东西可以带你学习中级Python，也有初级Python。
如果您是 Python 编码新手，那么它将引导您完成一些自学指南。
如果你愿意这样做，我想它会的。
会的。
这需要一些时间。
投资将是非常值得的。
对于中级 Python 来说，也有一些重要的东西。
有一堆东西。
代理中经常出现的事情之一是使用异步代码。
那里有异步的东西。
还有一些关于生成器的事情非常重要，还有很多好的中间内容
那里有Python级别的材料。
如果您在编码方面也没有那么丰富的经验，那么将会有一些关于如何调试的内容
进行调试。
如果您遇到称为名称错误的情况，那么这种情况总是有办法在
名称错误。
所以这方面也有很好的细节。
所以请务必查看指南。
我已经在里面放了很多东西了。
如果出现问题，还有故障排除指南。
故障排除将引导您完成每一步，包括最后的一些重要诊断。
然后这里的下一个小评论是说这些实验室认为它有点像
电子书。
它有内容和信息以及可以尝试的东西。
你会发现，当我们经历这个过程时，你会看到的可能会有所不同。
你所经历的可能与我现在经历的有所不同。
你可能会说，这很烦人。
我希望一切都一样。
但事情是这样的。
原因是因为我喜欢不断添加更多东西，使其成为最新的。
当我添加新内容时，我会尝试说得非常清楚。
我会引入额外的信息以使其保持最新状态，当人们陷入困境并遇到问题时
或者他们需要更好的解释，我可以把它放在那里。
这意味着每个人都可以从某些人陷入困境或我没有解释的事情中受益。
嗯，我可以把它添加到那里。
所以对我来说，这样做非常重要。
我之所以没有回来录制所有视频，因为我做得很好，首先，这会
花费很多时间，我宁愿花时间更新它。
但也因为这会抹掉人们通过观看视频取得的一些进步。
如果你正在看一个系列节目，然后视频在下面发生变化，这可能会很不和谐。
你。
因此，尽可能让这些实验室保持最新状态对我来说确实效果更好。
因此，请像对待资源一样对待实验室。
我建议你和我一起工作的方式是观看我通过实验室的视频。
我会详细说明，我会解释。
我会执行事情。
我不一定建议你和我同时做，因为那不是真正的
观点。
重点是，一旦我完成了一个实验，你就回来并自己一步一步地完成它，
你可以用它来构建学习、添加打印语句等等。
好吧，对此还有几句话要说。
我在这里使用称为笔记本的东西，它们是一种特殊类型的 Python 代码，经过组织
以这种方式进入细胞。
如果您不熟悉的话，将会有一个关于如何使用这样的笔记本的指南
和他们在一起。
我知道很多有工程背景的人一开始都会像这样感到有点沮丧
因为他们宁愿只使用 Python 代码。
我们也将使用 Python 代码。
我们将同时使用两者，但这种笔记本有其用武之地。
它对于研究和开发非常有用，这是成为人工智能工程师的重要组成部分。
它也非常适合学习，因为你可以逐步运行、实验、调整、放置
打印报表并学习。
所以这也有一个好处。
所以即使你不习惯这些类型的笔记本，我向你保证有好东西
这里也有。
我们还将使用普通模块进行一些 Python 编码。
好的。
所有细节到此结束。
让我们开始运行第一个实验室。
好的。
第一步是转到右上角，您可以在此处看到选择内核。
单击此处，您必须选择您的 Python 环境。
执行此操作的方法是在此处键入 Python 环境。
第一个这里的星星写着“Venv”。
说的是推荐。
它就在这个目录中。
这就是你想要选择的那个。
希望您能真正清楚地了解 Python 3.12 位于顶部。
完成后，它将在此处设置。
当你来到一个新的实验室时，你总是需要这样做。
因此，请记住这一点才能发挥作用。
好的。
然后，就像最后一件小事一样，呃，又多了一个指向我 LinkedIn 的链接
如果此时你还没有屈服，请记住你可以随时将他们与我联系起来。
好的。
所以现在我们要做的就是来到第一个单元格。
这些东西都被称为单元，这些代码单元。
我们将进行进口。
我们要做什么导入？
好吧，我们将从 dot env 进行导入。
你可以看到光标已经建议我们现在可以做什么 from dot env import load
点环境。
我希望您熟悉从模块导入函数的含义，但如果不熟悉，那么
请查看指南以复习一下。
但我现在只需按 Shift 键，然后按 Return 或 Enter 即可运行此代码单元。
执行单元格就完成了。
所以我们接下来要做的就是使用这个函数。
我们就是这样做的。
我们说加载点环境，我已经收到提示了。
就在那里。
环境覆盖等于 true。
那么这有什么作用呢。
Dot env 只是一个实用函数，它执行一些非常具体的操作。
它在项目根目录中查找具有非常特定名称的文件。
正如您可能猜到的那样，该文件名恰好是名称点 e。
假设这就是您设置一些您想要的环境变量的地方
用于该项目。
它只是一个查看该文件、解释它并将环境变量设置为的实用程序
一个结果。
这就是它的全部作用。
默认情况下， override is true 只是一个值得了解的小技巧。
加载。
环境。
如果您已经设置了环境变量（也许是您的配置文件），那么它会优先。
但它不会。
它不会覆盖它。
这可能是一个令人讨厌的小问题。
因为如果您过去设置了一个开放的 AI API 密钥并且您已经将其存储在全球某个地方
在你的计算机上，这会优先，你将无法弄清楚 OpenAI 到底为什么
正在拒绝您的密钥。
事实证明，正如您可以想象的那样，这在过去是一个常见问题。
而且我已经学会告诉人们总是把 override 等于 true，这意味着里面的内容
env 文件优先。
我们通过按 Shift Enter 来运行它。
现在我们的环境变量将被设置。
那么让我们检查一下。
下一个单元执行导入操作系统。
然后我们寻找一个名为 OpenAI API key 的环境变量，这正是我们命名的
它在 env 文件中。
如果它存在，我们将打印它存在并开始并给出前几个字母。
不然会说没有设置。
请参阅故障排除指南。
我按 Shift 并 Enter 来运行它。
我们就这样吧。
OpenAI 密钥已存在。
它开始于 scmproj。
一切都好，我希望一切对你也好。
如果没有，请转至故障排除指南。
好的。
现在我们有一个非常重要的导入声明。
从 OpenAI 导入 OpenAI 看起来像这样。
所以，如果这对你来说很奇怪，为什么一个是小写的，而另一个不是这样的？
再次，转到指南。
我将解释类和模块以及其他所有内容之间的区别。
但我们现在要执行此操作，如果这给您带来任何问题，那么这可能表明
您的紫外线环境故障排除指南有问题。
如果您遇到任何困难，请随时联系我。
我是来给你解开束缚的
好的。
所以我们现在要做的就是创建这个类的一个实例。
现在我倾向于总是这样做。
开放人工智能。
等于 OpenAI。
这可能会让人们感到有点困惑，因为当我们使用同一个词 OpenAI 时，
正确的称呼方式是 OpenAI 之类的。
Python 客户端。
因为我们正在做的是创建 Python 客户端库的实例。
但我称之为 OpenAI，因为它更简单、更短。
但这就是它所代表的意义。
我们正在创建该类的一个实例，现在就运行它。
值得记住的是，有些人认为当你这样做时，你正在创造一些东西
与本地实际的 GPT 大语言模型有关，但你不是。
OpenAI 是一个轻量级库，用于连接到 OpenAI 云上的端点。
所以这就是人们有时所说的客户端库。
它只是一个围绕端点的简单包装库，它调用 HTTP 端点来调用 API
在云端运行。
仅此而已。
这是一个简单的轻量级类，仅用于此目的。
那么，让我们继续前进。
我们现在要做的是创建一个名为“消息”的列表。
我希望你们大多数人都非常熟悉这种格式。
在我的 LM 工程课程中，我们一直在做这件事。
如果你不这样做，我会向这些人吹嘘一些额外的东西。
我现在不打算解释太多，但是与大型语言模型的对话是
通常以 OpenAI 发明的这种格式表示，并且已经无处不在。
字典列表，其中每个字典都有一个角色和内容。
在这种情况下，我们说角色是用户。
内容就是这个简单的问题二加二等于多少？
所以我们运行它，现在我们将实际调用 OpenAI 并检查一切是否正常
好的。
现在我们要来这里输入代码来调用 OpenAI。
光标将使我们变得非常容易。
我们只需输入响应等于 OpenAI 点。
这是一个聊天点完成点创建的。
您可以看到光标已经为我们填充了该内容。
我只需按 Tab 键，它就会立即完成。
它会说该型号是 GPT 4 mini。
消息就是消息。
那很完美。
并且它也会接受响应。
取出第一个选择的点消息内容并打印它。
这正是我们想做的。
OpenAI 的这种结构现在很常见。
如果您是新手，请看一下，我将尝试在指南中介绍一些内容。
但熟悉这一点的人会认为这是一种非常简单的调用 OpenAI 的方法。
如果我们运行这个，我们会得到对二加二是多少？这个问题的回答。
我们得到二加二等于四。
所以我们知道我们已经连接到 OpenAI，而且到目前为止一切顺利。
希望您现在对我们都可以调用 OpenAI 感到满意。
我们可以获得回应。
我们可以使用非常标准的聊天完成 API 结构，如果我们
永远忘记它是什么。
但现在让我们问一个更难的问题。
我们是时候变得有点代理了。
我们将把一只脚踏入特工阵营。
这更像是一个工作流程，而不是一个代理的我，但它仍然到达那里。
我们要问一个问题。
请提出一个困难的、具有挑战性的问题来评估某人的智商。
仅回答问题。
这就是我们的问题。
我们将把它放入标准消息结构中。
现在我们要问它。
所以我们再次说响应，它已经为我们填充了。
我们按 Tab 来完成。
我们按 Tab 键。
但我们只是要稍微改变一下。
我们将使这个答复等于也许我应该使这个像问题等于一样。
所以我们要收回那些回来的东西，我们要对其提出质疑。
然后我们将再次打印问题。
光标将其填充。
让我们运行一下吧。
我们开始吧。
这里我们有一个来自 OpenAI 的问题。
如果一列火车以每小时 60 英里的速度离开车站，另一列火车则在不同的车站，
120英里外同时行驶90英里。
两列火车会在距离第一站多远的地方相遇？
这是一个不错的脑筋急转弯。
所以我们现在要做的就是回答这个问题，然后再提出第二个问题
致电法学硕士来回答问题。
这就是为什么我将其描述为代理模式，因为它正在发出多个调用。
我们正在协调对 llms 的多次调用来解决更大的问题。
所以这将相对容易。
我们只需再次发出另一条消息来继续此操作。
看看光标如何为我们以用户角色填充消息。
内容就是那个问题。
伟大的。
让我们运行一下吧。
那就是现在的消息。
现在我们要再次询问 OpenAI。
所以我们会说响应是 OpenAI 创建的。
再次，光标将其全部填满并填满答案。
它甚至足够聪明地建议我们将其称为答案而不是问题。
老实说，这太不可思议了。
这正是我们想要做的。
我们对 OpenAI 的聊天完成 API 进行同样类型的调用。
在云端调用OpenAI的最简单方法。
现在我们正在获取问题的答案，我们将打印该答案。
我认为我们正在寻找的答案是 48。
让我们来看看。
所以我们会把它打印出来。
我们开始吧。
这里有一堆信息，最后写着 48。
你可能已经知道这一点了。
您认识到这已以降价形式回归。
它里面有一些 Markdown 的东西，LLM 喜欢用 Markdown 来谈论。
我们可以在这里添加一些代码，然后我们就可以从那里开始操作。
哈哈。
啊。
是不是很恐怖？
有时，光标在 IPython 显示、导入 markdown 和显示中执行此操作的方式令人毛骨悚然。
然后光标告诉我们要写的下一行。
我在这里真的没有工作，是吗？
显示降价，但唯一的问题是。
谢天谢地，它出了点问题。
我们真正想要显示的是答案，而不是问题。
因此，如果我们这样做并运行它，那么我们会看到格式良好的答案。
我会让你通读一下它的工作，它得出了 48 英里的结论。
呃，我们就这样吧。
这是我们的第一个半代理模式，只需几分钟即可构建。
如果您不熟悉其中任何一个，请查看指南，尝试一下，看看它。
正如我所说，恭喜你来到这里。
但在本实验的最后有一个练习。
我确实鼓励你做这些练习。
这是你真正可以证明你已经做到了这一点的地方。
你可能会想，好吧，这个项目没有太多商业广告，我确实想尝试一下
并尽我所能编织商业角度，使其适用于商业。
因此，我现在为您准备了一个练习，使其稍微适用于商业。
因此，我们将尝试要求法学硕士首先选择一个可能值得探索的业务领域
以获得人工智能机会。
其次，要找出所决定的业务领域的痛点，然后就是
需要明确解释的一项。
对于代理解决方案来说可能成熟的挑战是什么？
然后第三步将是针对该问题实际提出人工智能解决方案。
所以我希望你在这个空单元格中，可能在光标的帮助下，呃，到，到浏览
并通过三次调用 LMS 来实现这一点。
首先，您在此消息中添加一些内容来解释您希望它选择一个业务部门。
然后你会根据该响应得到响应。
你阅读商业构想，然后你将重复这三个步骤以获得痛苦
点，然后得到AI解决方案并将其全部打印出来。
如果您愿意，可以以良好的格式打印它们，并用它作为实验的一种方式
通过一些代理工作流程，实际上也是为了获得一些商业利益，也许是为了获得有趣的东西
关于如何将人工智能应用于实际业务痛点的想法。
好的。
我希望你喜欢这个挑战。
当然，如果您有任何问题，那么您可以从 ChatGPT 或光标获得帮助，
或者给我留言，我会在第一天的最后一堂课上见。