因此，在我们继续之前，我想花一点时间解释一些可能令人费解的事情
你。
如果它没有让你感到困惑，并且你并不真正关心这个，那么你可以加快速度
我站起来，等到我们继续这个。
但我想解释一下 Gradio 的实际工作原理。
比如，它在做什么？
就像，您在这里看到的用户界面是什么？
为什么这个 URL 是什么？
而且，就像幕后实际发生的事情一样。
这意味着您可以编写一些 Python 代码并突然拥有一个 UI。
事实证明它实际上非常简单。
没有什么特别复杂的，但它是一系列非常好的想法的结果
能够快速模拟 UI 并快速获得 MVP，这几乎是神奇的效果。
这很容易解释，因为 Gradio 基本上做了三件事。
它做了三件事，我将一一告诉你。
当你看到，当它做了这三件事时，最终的结果就是这种神奇的效果
轻松获得 MVP。
所以三件事。
第一，广播所做的第一件事。
您已经编写了一些 Python 代码来描述您想要的用户界面。
在这种情况下，它的界面非常简单。
有时在前几天我们有像 GR markdown、GR drop down for a select box 以及其他一些
我们在 GR 文本文本框中拥有的内容。
我们通过创建这些无线电对象来描述一个界面，或者是开箱即用的混合对象
聊天界面或更具体的界面。
在这样做的过程中，我们告诉广播电台它想要什么以及我们想要什么，Gradio 使用它来生成
前端接口。
它实际上使用了前端框架 svelte，这非常好，因为它只是生成
到基本的 JavaScript。
因此它使用它来生成您网站的基本前端描述。
这就像基于 Python 中的高级描述生成的代码，允许
我们用 Python 描述一个 UI，该 UI 被转换为简单的 JavaScript UI。
好吧，你可能已经猜到了那部分。
那么第二名是什么？
好吧，第二件事是它要做的下一件事是，当您调用 Dot launch 时，它会启动一个服务器。
它使用 Starlette 应用程序服务器框架，使其能够非常轻松地启动 Web 服务器。
它拥有它以便网络服务器正在监听。
如果有人访问该 Web 服务器端点，它就会提供刚刚生成的前端。
所以它坐在那里等待有人点击它，然后它会为你提供前端服务
应用程序。
当你仔细想想时，这是显而易见的。
所以它实际上是一个一直运行的 Web 服务器，随时准备为您的应用程序提供服务。
它开始了。
他们选择了一个端口，看起来像是端口七，860，我认为是它监听的端口
在。
但如果它用完了，如果它被占用，它就会选择下一个，然后继续滴答作响，直到
它找到一个免费的。
你可以指定你想要的端口，但是这个，例如，我们当前正在查找的端口
现在，它在我的本地主机上的端口 7、8、60 上运行，任何点击该 URL 的人都会
将这个自动生成的前端提供到他们的浏览器中。
果然，如果我现在点击这个，就会出现一个网页。
这就是所提供的内容，现在正在我的浏览器窗口中运行。
这是由在幕后运行的小星星服务器提供的。
事实上，如果我去查看源代码，我们会看到生成的所有内容。
它实际上就像是一个在 iframe 中运行某些内容的页面。
如果我们想看，如果我们想深入研究 JavaScript 来看看我们实际上在看什么
在这里，看看我们是否可以找到，呃，环顾四周，呃，就是这里吗？
这就是它运行的 iframe。
呃。
不挂断。
开始了。
就是这样。
这是代码。
嗯，对。
这就是描述。
如果您熟悉前端的东西，这就像缩小的前端代码。
如果我搜索“svelte”，我们就去吧。
我们可以看到，它确实是一个在我的浏览器窗口中运行的简洁前端应用程序。
这就是我们在这里看到的。
我知道我会为你深入一些杂草，但为了让你感觉到仅此而已
发生了，它生成了一个 JavaScript 页面。
这就是当我们到达端口七、八、七、六时所看到的，这是下一个空闲端口
我本地计算机上的端口。
好的。
第二步的最后一部分您可能想知道它为什么会出现在我们的笔记本中
就这样？
嗯，这只是笔记本电脑的一个功能。
笔记本输出单元可以显示网页内容。
如果这就是我们正在尝试的，那么这就是我们所创造的。
然后笔记本输出可以显示其中的网页。
就像您可以将其视为在笔记本输出单元内运行一个小浏览器窗口。
这就是为什么我们在这里看到它，以及能够进入该网页，这样
Gradio 所做的第二步。
现在只剩下第三步了。
你是不是已经想通了呢。
好的。
所以第三步是，此外，当我们描述我们正在做的事情时，我们会告诉
Gradio 我们的回调函数，我们想要附加到用户界面的代码中的一些函数。
在这种情况下，这只是一个简单的功能聊天。
但我们前几天玩过其他一些东西以及 Gradio 的作用。
你能想象吗？
它的服务器非常简单。
如果你点击根目录，那么你就会得到网页，即生成的前端页面。
它还为您的每个回调创建路由。
在我们的例子中，只有一次聊天，因此它有一个后端路由。
如果有人点击该后端路线，它将调用我们刚刚拥有的聊天功能
就到这里了。
如果有人点击该服务器上的该路由，该代码将被调用。
当然，它生成的前端代码毫不奇怪，它确保如果您单击
提交按钮，它将调用您想要的聊天路由将导致的路由
回复回来。
它确保返回的任何内容都正确填充在 UI 上。
所有这些都被烘焙到前端代码中，以便它调用正确的路由并将结果放入
在正确的字段中。
所有这些都反映在这一行代码中。
如果你回顾几天那些稍微实质性的事情，你就会清楚地看到
有用。
现在，您可以看到这三个步骤中的每一个如何一起简单地允许您生成这样的 UI。
如果你想知道你是否在想，艾德，这就是我生命中的十分钟，我不会
回来吧。
这和人工智能有什么关系？
这不是特别的，但它确实可以帮助您了解如何构建这些类型的应用程序，如何
他们与你的商业逻辑挂钩，事实上，小明星观察者是
非常具有可扩展性。
它们可以支持非常高的负载。
所以这不仅仅是一个玩具。
它可用于内部应用程序等。
嗯，它可以带你走很远。
嗯，您还可以构建一个单独的完整前端，并仍然使用 Gradio 回调作为后端。
因此，Gradio 只能在某种 API 模式下运行，因此它可以成为您的良好垫脚石。
未来的战略应用程序，具有另一种语言的定制前端，例如 Next.js 应用程序或
某物。
呃，所以这都可以成为你自然迁徙的一部分。
所以它不仅是一个相当高马力的原型平台，可以使用
对于相当大的应用程序来说，还有一个非常自然的迁移路径可以将其投入生产。
好了，技术闲聊就到此为止了。
如果您想阅读的话，它就写在那里。
让我们做一些有趣的事情吧。
让我们继续构建一个多模式人工智能助手。