现在我们回到光标处，我已经折叠了所有文件夹。
但我将返回到基础文件夹并进行实验三。
第一周的第三个实验室。
第四天，这就是我们所处的位置。
这就是事情变得有趣的地方。
所以我在 Foundations 中有一个名为 me in 的目录，并且在我的内部放置了一些文件。
其中之一就是LinkedIn。
LinkedIn 是呃，我明白了，我不认为我可以在这里打开它。
我想这不喜欢 PDF 格式。
没有。
所以你必须相信我的话。
这是我的 LinkedIn 个人资料的 PDF 版本。
您可以从 LinkedIn 内获取该信息。
您可以进入 LinkedIn，然后单击点点省略号菜单之一并下载您的
简介为 PDF。
这就是我所做的。
我已将其作为 LinkedIn PDF 放在这里。
我还有一个摘要文本，称为摘要 txt。
这只是关于我的两句话。
这两件事就在我身上。
当您进行本实验时，您要做的就是用有关您的信息替换这些文档。
LinkedIn 应该是您的 LinkedIn PDF 个人资料或简历的 PDF 或类似内容。
摘要包含一些关于您的信息，并包括一些额外的有趣的内容。
关于你的一个有趣的事实，你希望人们了解你的一些事情，一切都会变得
清除。
别担心，如果没有您的控制，它不会去任何地方。
但这有望很快变得清晰。
好的。
所以如果我们回到实验室。
正如我所说，我们目前还不会实际使用工具。
尽管我们一直在谈论它们。
工具明天就会来。
我们要打好基础。
好的。
所以我现在要导入一些你熟悉的包，但要睁大眼睛，你知道。
好吧，但是 PDF pypdf2 和 gradio 你可能不知道 gradio 我以前的学生会很了解，因为
你知道我是超级的。
我喜欢 Gradio，我对这个平台充满热情。
我是一个糟糕的前端工程师，而 gradio 可以创造出漂亮的前端。
即使对于像我这样可怕的人来说也是如此。
真的很棒。
这确实是一种非常轻松地构建数据科学用户界面的方法。
我们会这样做，但我不会详细介绍它。
Pypdf2 是一个用于解析 PDF 文件的流行库的示例，如果您想了解更多信息
如果您愿意的话，您可以简单地要求 ChatGPT 为您写一份关于它们的快速指南。
要获得合适的流行资源来做某事，您可以询问 Claude 或 ChatGPT。
如果你想。
你可以，你可以。
它们的实际来源称为 PyPI。
这是包索引。
这是开源 Python 包所在的地方。
你可以去那里搜索不同的包，查看他们的 GitHub 存储库并了解更多信息
关于他们也是这样。
好的。
但我要导入这些。
顺便说一下，我已经在右上角设置了。
我呃，确保我的虚拟环境已设置。
那里需要一些时间。
我猜这是一个需要加载一堆东西的渐变，并且完成所有操作需要 14 秒
这些进口。
我猜发生了很多事情。
好的。
现在我们加载环境并初始化 OpenAI 客户端库。
所以看看这个。
现在，我只需创建一个 PDF 阅读器，然后将其指向我的 LinkedIn PDF。
我在调用页面提取文本的页面中阅读。
我只是把它们放在一起。
就这么简单。
现在这个 LinkedIn 变量，让我们打印该 LinkedIn 变量，这样我们就可以看到它打印
LinkedIn，你会看到一大堆关于我的信息，并且输出被截断。
所以你只看到了我的一小部分。
但是，还有比您需要知道的更多的事情。
但既然您肯定已经在 LinkedIn 上与我联系，那么您已经知道这一切了。
嗯，那么，呃，我要在这里加载关于我的摘要文本。
有时，如果您不是 PC 用户，则需要这样做。
是的，我相信您对此很熟悉，但指南中对此进行了介绍。
然后我将一个名为 name 的变量设置为我的名字。
你应该将其设置为你的名字。
好的。
现在我们之前没有讨论的一件事是系统提示和用户提示。
它们现在相当普遍。
所以您可能知道，到目前为止我们一直只是使用单个用户提示进行提示。
但您实际上可以指定两个不同的提示。
系统提示更多的是为任务设置上下文的整体说明
手头的内容，以及应该响应的格式和方式，然后用户提示就是实际的
来自用户的问题。
在这种情况下，我们可以很方便地将这两个问题分开。
所以对于系统提示我说你正在扮演名字。
所以这将是我，也将是你。
您正在回答该人网站上的问题，特别是与他们的职业相关的问题，
背景、技能和经验。
您的责任是尽可能忠实地代表网站上的互动。
LinkedIn 个人资料中会向您提供背景摘要，等等等等。
它要专业且有吸引力。
所以这是关于定基调的，这是在系统提示中做的一件好事。
如果你不知道答案，直接说出来就很好。
提示上下文给出。
好的。
然后我使用该摘要变量添加摘要。
我还添加了 LinkedIn 个人资料。
我使用 Markdown 标签将其显示为标题。
然后我以这个上下文结束，请与用户聊天。
始终保持像你一样的性格。
好的。
现在情节变得更加复杂。
现在你知道什么了吗？
我就是我在这里玩的游戏。
你知道我们在做什么。
让我们运行它并打印它。
这样我们就可以看到系统提示符实际上是什么样子了。
我们开始吧。
您可以看到它的形状完全符合我们的预期。
它里面会有。
当然，关于我的信息以及 LinkedIn URL、LinkedIn PDF 内容等，希望也是您的
会有你的。
并且您应该输入一些打印语句来检查它。
确保您对迄今为止发生的一切感到非常满意。
因此，我们将使用 Gradio 启动一个用户界面，允许我们基于 LLM 进行聊天
配备了此系统提示符。
使用 Gradio 的方式是您需要编写一个类似于回调函数的函数
当用户输入某些内容时，Gradio 会在需要进行某些处理时回调
在。
这个特定回调函数的风格是你编写一个名为 chat 的函数的风格，
它获取用户正在输入的消息、正在发送的消息以及所有先前的历史记录
消息，采用 OpenAI 的格式。
我们需要做的是调用 LLM 并返回 LLM 的下一个响应以进入
聊天。
所以我会让你仔细看看这个，让你自己相信我正在做的事情是正确的。
但基本上我构建了一个 OpenAI 风格的字典列表。
我先从系统提示角色系统内容和系统提示开始。
我添加了来自 Gradio 的历史记录，然后我插入了刚刚收到的这条缪斯消息。
然后，我使用这些消息调用 OpenAI Dot create for GPT 4 mini，然后返回响应
选择零消息内容。
所以这对你来说应该是相当熟悉的东西。
然后使用 Gradio 就非常简单了。
你只要打电话。
在这种情况下，我们想要聊天。
这样就可以调用聊天接口了。
我们告诉它我们编写的函数，以便它知道可以将此作为回调调用。
我们要求它启动。
当我运行它时，我得到一个像这样的界面。
我可以在那里打个招呼。
您好，欢迎来到我的网站。
我该如何帮助您？
所以我可以说，你最大的成就是什么？
我们会看看它说了什么。
我认为我最大的成就是共同创立了 Nebula，我们正在利用生成技术
人工智能和专有法学硕士将改变人们寻找和聘用人才的方式。
极好的。
它还谈论了我创办的公司。
所以这是一个非常合法、非常好的答案。
我认为这可能是真的，这总是一件好事。
可以说，处理得非常好。
您遇到并需要克服的挑战是什么？
这是面试中可能会被问到的一个很难的专业问题。
好的。
我在摩根大通成功的职业生涯过渡期间面临的重大挑战之一
创办自己的公司，直到这一切成为现实。
我不知道他是如何从我的 LinkedIn 个人资料中得知这一信息的。
我想它一定在某个地方或什么东西。
这就是其中所暗示的。
但我的意思是，它恰好是正确的。
所以这是一个非常好的答案。
奇妙的是，在短短几分钟内，我们就构建了一个聊天界面，并且使用了
为其提供有关我的信息的资源，以便它能够像我一样行事并像专业人士一样
阿凡达，是我回答有关我职业生涯的问题时的另一个自我。