2024-09-01
Linux运维
00

官网教程:https://www.gradio.app/guides/sharing-your-app#mounting-within-another-fast-api-app

实践:

cpp
import gradio as gr from fastapi import FastAPI from starlette.middleware.cors import CORSMiddleware CUSTOM_PATH = "/gradio" app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get("/") def read_main(): return {"message": "This is your main app"} # 定义当按钮被点击时执行的函数 def greet(text): return f"Hello, {text}!" def create_gradio(): # 使用 Blocks API 创建界面 with gr.Blocks() as demo: gr.Markdown("### Enter your name to be greeted") # 创建一个文本输入框 name_input = gr.Textbox(label="Your name") # 创建一个按钮 greet_button = gr.Button("Greet") # 创建一个输出区域 output = gr.Textbox(label="Greeting") # 当按钮被点击时,调用greet函数,并将结果显示在output中 greet_button.click(fn=greet, inputs=name_input, outputs=output) return demo if __name__ == '__main__': import uvicorn app = gr.mount_gradio_app(app, create_gradio(), path=CUSTOM_PATH) uvicorn.run(app)

在这里插入图片描述

介绍:

在Web应用开发中,将不同的工具和库结合起来实现更丰富的功能是一种常见的需求。本文将介绍如何在基于FastAPI框架构建的Web应用中嵌入Gradio界面,以实现用户友好的交互体验。

Gradio是一个强大的Python库,可用于快速构建机器学习模型的交互式界面。FastAPI则是一个快速(高性能)的web框架,用于构建API。将它们结合起来,可以实现更复杂和功能强大的Web应用程序。

步骤:

  1. 导入所需的库:

    在代码中首先导入所需的库,包括Gradio、FastAPI以及相关的中间件。

  2. 设置FastAPI应用:

    创建FastAPI应用实例,并配置跨域资源共享(CORS)中间件,以允许不同源之间的通信。

  3. 定义主页路由:

    创建一个简单的路由处理函数,用于主页请求的处理,并返回一个简单的消息,表示主页已成功加载。

  4. 定义Gradio界面:

    创建一个函数,用于定义Gradio界面。在这个函数中,使用Gradio的Blocks API创建界面元素,如文本框、按钮等,并定义按钮点击事件的处理函数。

  5. 将Gradio界面挂载到FastAPI应用中:

    使用Gradio提供的mount_gradio_app函数,将Gradio界面挂载到FastAPI应用中,并指定挂载路径。

  6. 启动应用:

    使用uvicorn或其他HTTP服务器启动FastAPI应用,以便用户可以访问并与Gradio界面交互。

代码优化:

在代码中已经实现了功能,但可以对其进行一些优化,以提高可读性和可维护性。例如,可以将路由处理函数和Gradio界面定义函数分离出来,使代码结构更清晰;可以添加注释来解释每个函数的作用和参数;可以使用更具描述性的变量名。

结论:

通过将Gradio界面嵌入到FastAPI应用中,我们可以轻松地实现一个交互式的Web应用程序,为用户提供友好的界面来与机器学习模型进行交互。这种组合使用不同库和工具的方法,可以为开发者提供更多的灵活性和创造性,以满足不同场景下的需求。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!