首页
开源软件正文内容

谷歌的新开源 Python UI 框架 Mesop

2024年07月08日
阅读时长 2 分钟
阅读量 138
谷歌的新开源 Python UI 框架 Mesop

用不到 10 行代码构建 Web 应用程序界面。

这是谷歌工程师们在他们的新项目 Mesop 中大胆宣称的,这是一个基于 Python 的 UI 框架,能够快速开发 Web 应用程序,特别是演示和内部工具。

这是什么?这个新的免费工具对开发者有多大帮助呢?

Mesop 是什么?

在很多方面,Mesop 是许多现有想法的混合再包装,设计用于 Python 开发人员的一个统一的 UI 框架。如果你是一个开发人员,总是苦于快速创建一个看起来不错的 AI 前端界面,Mesop 可能正是你所需要的。

它还很新 - 他们称之为 0.8 版本 - 但看起来已经很有前途。以下是 Mesop 优点:

  1. 你可以快速构建一个基本的 Web 应用程序

  2. 它带有现成的组件来构建你的应用程序

  3. 它与你已有的 Python 代码很好地配合

  4. 它为你处理了很多复杂的事情

  5. 你可以用它制作简单或复杂的应用程序

Mesop 非常适合机器学习或 AI 应用程序演示和内部工具,因为它使没有前端经验的开发人员能够快速构建 Web 应用程序。

关于 Mesop 的一个快速事实,它的第一个版本发布于 2023 年 12 月

示例 #1:聊天 Web 应用程序演示

这个界面非常适合创建 AI 聊天机器人的开发人员:

import random
import time
import mesop as me
import mesop.labs as mel

@me.page(
  security_policy=me.SecurityPolicy(
    allowed_iframe_parents=["https://google.github.io"]
  ),
  path="/chat",
  title="Mesop Demo Chat",
)
def page():
  mel.chat(transform, title="Mesop Demo Chat", bot_user="Mesop Bot")

def transform(input: str, history: list[mel.ChatMessage]):
  for line in random.sample(LINES, random.randint(3, len(LINES) - 1)):
    time.sleep(0.3)
    yield line + " "

LINES = [
  "Mesop is a Python-based UI framework designed to simplify web UI development for engineers without frontend experience.",
  "It leverages the power of the Angular web framework and Angular Material components, allowing rapid construction of web demos and internal tools.",
  "With Mesop, developers can enjoy a fast build-edit-refresh loop thanks to its hot reload feature, making UI tweaks and component integration seamless.",
  "Deployment is straightforward, utilizing standard HTTP technologies.",
  "Mesop's component library aims for comprehensive Angular Material component coverage, enhancing UI flexibility and composability.",
  "It supports custom components for specific use cases, ensuring developers can extend its capabilities to fit their unique requirements.",
  "Mesop's roadmap includes expanding its component library and simplifying the onboarding processs.",
]

这种简单而有效的设置大大减少了通常所需的代码量。在代码编译后,最终的结果如下:

图片由 Jim Clyde Monge

不要在意提示和回应,这只是演示目的。

这非常有用,因为这样的用户界面通常需要我用 C# 或 Javascript 写超过 100 行代码。

示例 #2:文本到图像 Web 应用程序

另一个简化的界面是用于图像生成应用程序:

import mesop as me
import mesop.labs as mel

@me.page(
  security_policy=me.SecurityPolicy(
    allowed_iframe_parents=["https://google.github.io"]
  ),
  path="/text_to_image",
  title="Text to Image Example",
)
def app():
  mel.text_to_image(
    generate_image,
    title="Text to Image Example",
  )

def generate_image(prompt: str):
  return "https://www.google.com/logos/doodles/2024/earth-day-2024-6753651837110453-2xa.gif"

这是 Web 应用程序用户界面的样子:

图片由 Jim Clyde Monge

太棒了!现在你只需要将图像模型或 API 访问集成到后端即可。

示例 #3:文本到文本 Web 应用程序

你也可以用以下代码构建一个简单的文本到文本用户界面:

import mesop as me
import mesop.labs as mel

@me.page(
  security_policy=me.SecurityPolicy(
    allowed_iframe_parents=["https://google.github.io"]
  ),
  path="/text_to_text",
  title="Text to Text Example",
)
def app():
  mel.text_to_text(
    upper_case_stream,
    title="Text to Text Example",
  )

def upper_case_stream(s: str):
  return "Echo: " + s

图片由 Jim Clyde Monge


试用 Mesop

有两种方法可以尝试 Mesop。你可以在 Google Colab 上测试它,也可以在本地 PC 上安装并运行它。

首先,让我向你展示如何在 Google Colab 上尝试它。

前往这个 Colab 笔记本,用你的 Google 账号登录。别担心,它是免费使用的,但有限制。

图片由 Jim Clyde Monge

点击小播放按钮安装 Mesop。

图片由 Jim Clyde Monge

确保看到那个绿色的勾号,表示 Mesop 安装成功。接下来,导入库并启动应用程序。

这个小聊天应用程序示例只需要几行代码,却能展示一个完整且可工作的用户界面。

@me.page(path="/chat")
def chat():
  mel.chat(transform)
def transform(prompt: str, history: list[mel.ChatMessage]) -> str:
  return "Hello " + prompt

图片由 Jim Clyde Monge

注意:你也可以在本地安装 Mesop 并离线构建应用程序,方法是按照这个 教程。如果你希望我写一份更全面的关于如何用 Mesop 构建前端 UI 的指南,请在评论中告诉我。

如果你想深入了解代码的细节,请查看 GitHub 上的开源仓库

图片由 Jim Clyde Monge

Mesop 是谷歌官方产品吗?

不,Mesop 不是谷歌官方产品,Mesop 是一个由一小部分谷歌工程师团队维护的 20% 项目,也得到了更广泛社区的贡献。

Mesop 与 StreamLit 相比如何?

Streamlit 是一个广受欢迎的工具,受到数据科学家们的喜爱,可以快速创建 Web 应用程序。我自己有时也会使用它,因为它的用户友好设置和各种现成的组件。

然而,Mesop 提供了一些独特的优势,特别是在灵活性和定制化方面。

  • 灵活性和定制化: Mesop 非常灵活,因为你可以只用 Python 编写和调整用户界面。

  • 易用性: Mesop 有一个开箱即用的 聊天组件,但如果你需要定制它,你实际上可以只复制 chat.py 文件并根据需要进行定制。相比之下,Streamlit 很适合入门,但一旦你尝试做一些复杂的定制,你通常需要编写自己的 React/TypeScript 组件。

  • 处理复杂项目: 根据 Mesop 开发人员的说法,Mesop 有一个不同的构建 UI 的哲学(例如基于函数),这导致了一种截然不同的开发人员体验。这种方法在应用程序增长时(例如数千行代码)表现良好,即使是内部工具和演示通常也是如此。

总结

如果你和我一样是 Python 新手,你可能会觉得 Mesop 有点具有挑战性。它可能最适合那些已经对 Python 有很好掌握并希望快速开始创建 Web 应用程序的人。

由于 Mesop 是开源的,它的成功将取决于广泛的采用和社区驱动的改进。如果它变得流行,Mesop 可能会成为像 Streamlit、Gradio 和 ChainLit 这样知名工具的一员,成为 Python 开发人员喜欢构建 Web 应用程序的首选工具。

如果你想快速测试想法、为团队制作工具或创建演示,Mesop 可能是一个很好的选择。所以试试看,并告诉我你对这个新工具的看法。

免责声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

相关文章

7 个 GitHub 项目教你超越大学课堂
2024年11月25日00:49
本文推荐了七个优质的 GitHub 仓库,包括系统设计入门、免费开发资源和自建 X 等,帮助开发者超越大学课堂学习。这些仓库涵盖从大型系统设计到全栈示例应用等多领域内容,为开发者提供实用资源,助力快速提升技能和实践应用。
你应该了解的10个热门开源项目
2024年11月21日02:59
本文介绍了10个热门的开源项目,这些项目因其创新性和实用性而受到关注。包括设计系统Skeleton、交互式地图库Leaflet、Web抓取库Crawlee等。这些项目不仅在技术上有独特的优势,还提供了广泛的文档支持,是开发者值得探索的宝贵资源。
你一定要看看 10 个令人惊艳的 GitHub 项目
2024年11月17日21:53
本文介绍了10个令人惊艳的GitHub开源项目。这些项目通过结合人工智能与开源技术提升了生产力、可访问性和协作能力。例如,Uptime Kuma简化了运行时间监控,Cline通过AI优化编码,Docling增强了语言数据管理。其他项目如Fish-Speech和Repomix展现了AI在语音合成和代码整合中的创新应用。这些工具反映了开源创新在提升用户体验和互操作性方面的重要性。
程序员和开发者必备的开源工具
2024年11月16日17:27
本篇文章探讨了程序员和开发者在软件开发中可以利用的开源工具。这些工具包括 Sweep AI、Gitleaks、CloudFox、Jawsm、Mergiraf、Stdlib、Skeleton、WebLLM Chat 和 Reppy,它们提供了从代码处理和安全到用户界面设计的广泛功能。这些工具旨在提高开发效率、安全和用户体验。
7 个让你惊讶的开源项目
2024年11月12日21:07
本文介绍了7个被低估却非常有用的开源项目,如Cap、HeyForm和Rowy等。这些工具不仅是昂贵付费软件的绝佳替代品,还提供了录屏、表单制作、后端管理等多种功能。不仅让工作更高效,还支持个性化和数据协作,有些项目还能确保隐私安全。
2024 年你不能错过的 11 个开源 Python 项目
2024年11月07日23:23
本文精选了 2024 年 Web 开发者必知的 11 个开源 Python 项目,帮助开发者在 Web 应用、数据处理、AI 集成等方面更高效地工作,推荐各类实用工具如 Opal、Taipy、Crawlee 等,每一个项目都能为你的开发带来新视角和便捷性。