总结冗长的文本可能很乏味,尤其是在 PyBazaar 这样的平台上,简洁的摘要可以改善用户体验。在这篇文章中,我将分享如何使用 Simplemind 和 Gemini 在我的基于 Django 的项目中自动化此过程。
最近,我推出了 PyBazaar.com,这是一个供 Python 开发人员展示技能、寻找工作机会以及发布和查找开发资源的网站。其目的是为 Python 开发人员提供一个可以营销他们的服务、产品或项目的中心场所。
PyBazaar 在详细视图中显示职业机会和资源的冗长描述,在列表视图中显示简短摘要。摘要帮助用户快速掌握资源和职业机会的内容,而无需打开每个详细视图,从而增强 PyBazaar 的整体浏览体验。为了让编辑更顺畅,我引入了基于AI的自动摘要。
Kenneth Reitz,著名包 requests 的作者,最近发布了他的最新作品——Simplemind——它改善了开发人员使用大型语言模型 (LLM) API 的体验。我认为这是一个尝试将他的包集成到 PyBazaar 的好机会。
虽然我选择 Google Gemini 作为免费套餐,但 Simplemind 对 OpenAI 或 Claude 等提供商的支持意味着开发人员可以根据需要扩展以获得更高级的功能或更精确的结果。
首先,我必须在 Google AI Studio 获取 API 密钥。
然后我安装了SimplMind:
(venv)$ pip install 'simplemind[full]'
但是,在等待其中一个依赖项 (grpcio) 在我的 Mac 上编译时,我有时间喝一杯能量饮料,并有足够的时间滚动浏览一半的社交媒体源。
SimplMind 希望在环境变量中定义 LLM API 密钥。在我的 Django 项目中,我将机密存储在 JSON 文件中,Git 会忽略该文件,并使用我编写的实用函数 get_secret() 读取这些值。
所以,我在 Django 设置中添加了这些行:
import os os.environ["GEMINI_API_KEY"] = get_secret("GEMINI_API_KEY") DEFAULT_LLM_PROVIDER = "gemini"
我创建了一个简单的视图,它获取发布的 HTML 内容,要求 LLM 对其进行总结,并将摘要返回给用户:
import json import simplemind from django.contrib.auth.decorators import login_required from django.conf import settings from django.http import JsonResponse from django.utils.html import strip_tags @login_required def summarize(request): summary = "" try: if ( request.method == "POST" and (data := json.loads(request.body)) and (content := data.get("content")) and (text := strip_tags(content).strip()) ): summary = simplemind.generate_text( prompt=f"Condense the following information in 2 sentences:\n\n{text}", llm_provider=settings.DEFAULT_LLM_PROVIDER, ).strip() except json.JSONDecodeError: pass data = {"summary": summary} return JsonResponse(data)
如您所见,Simplemind 与 requests 应用程序一样优雅。如果我需要更高级的结果或更智能的查询,我可以轻松切换到 OpenAI 或 Claude。
我使用 strip_tags() 来减少标记计数,并使用 strip() 来删除前导和尾随空格。
为了提高视图的性能,我还可以使用 ASGI 或后台任务,但当 PyBazaar 有更多用户时需要考虑这一点。
摘要按钮有其模板,我将其包含在我的 Django Crispy Forms 布局中:layout.HTML("""{% include "summarizer/includes/summarize_button.html" %}"""):
(venv)$ pip install 'simplemind[full]'
当用户单击“Summarize by AI”按钮时,Javascript 会暂时禁用该按钮,将其文本更改为“Summarizing...”,从 QuillJS 字段读取 HTML 值,并将其发布为 {"content ": "..."} 到摘要视图。收到 {"summary": "..."} 形式的摘要后,Javascript 会填充摘要文本区域并使按钮再次可点击。
SimplMind 使用智能默认设置使 LLM 的使用变得更加容易,因此开发人员无需调整温度或 max_tokens 等复杂的设置。
Gemini LLM 可以免费使用,对于像这样的简单功能和中等数量的活跃用户来说似乎足够了。
我仅用了半天时间就在 PyBazaar 上实现了此摘要功能,并且我可以轻松地调整此集成以生成元描述、电子邮件草稿或个性化推荐。
如果您是一名 Python 开发人员,希望展示自己的技能、共享资源或寻找机会,请立即访问 PyBazaar.com!
封面照片由Caio拍摄
以上是在 Django 网站中创建基于 AI 的摘要的详细内容。更多信息请关注PHP中文网其他相关文章!