在人工智能时代,Django + 简单的 HTML + Whisper + mixtral-8x7b-instruct + SQLite 实现了一个 TODO应用

这篇具有很好参考价值的文章主要介绍了在人工智能时代,Django + 简单的 HTML + Whisper + mixtral-8x7b-instruct + SQLite 实现了一个 TODO应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

构建 AI-powered TODO 应用

人工智能TODO应用程序演示https://ivan-tolkunov–surukoto-run.modal.run/(警告:该应用程序可能需要长达30秒才能启动)。所有数据在不活动5分钟后重置。试着告诉它:“添加彩虹的每一种颜色”,然后“标记所有提到绿色和紫色之间的待办事项”和“清理完成的待办事项。”
在人工智能时代,Django + 简单的 HTML + Whisper + mixtral-8x7b-instruct + SQLite 实现了一个 TODO应用,sqlite,人工智能,django,javascript,whisper,html

新的思考

每个人都在构建TODO应用程序,以便开始使用编程语言或技术。我问自己一个问题:在人工智能时代,TODO应用程序会是什么样子?
所以我想出了一个主意,构建一个TODO应用程序,你可以简单地与之交谈并给出指示。我从一个简单的用例开始,告诉应用程序“将牛奶添加到购物清单中”。但后来我意识到,使用现代LLMs,我还可以让应用程序根据用户命令检查TODO项目或删除它们。这个应用程序使用起来真的很有趣!
它是一个简单的Django网络应用程序。模型非常简单:

from   django.db import models

class Todo(models.Model):
    title = models.CharField(max_length=100)
    created_at = models.DateTimeField('Created', auto_now_add=True)
    update_at = models.DateTimeField('Updated', auto_now=True)
    isCompleted = models.BooleanField(default=False)

    def __str__(self):
        return self.title

然而,在后端,我有一个接受语音命令的端点,而不是典型的CRUD(创建、读取、更新、删除)操作:

from django.urls import path
from . import views 

app_name='todos'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('process-voice-command/', views.process_voice_command, name='process_voice_command'),
]

端点是使用简单的HTML音频API从前端触发的:

const recordButton = document.getElementById("record"); 
const recordButtonText = document.getElementById("record-text");

let recorder = null;

recordButton.onclick = async () => {
  if (recorder) {
    recorder.stop();
    recorder = null;
    return;
  }

  const chunks = [];
  const stream = await navigator.mediaDevices.getUserMedia({ audio: true });

  recorder = new MediaRecorder(stream);
  recorder.ondataavailable = (e) => chunks.push(e.data);
  recorder.onstop = async () => {
    const blob = new Blob(chunks, { type: "audio/webm;" });
    const formData = new FormData();
    formData.append("audio_file", blob, "voice-command.webm");
    const response = await fetch("/todos/process-voice-command/", {
      method: "POST",
      body: formData,
    });
    window.location.reload();
  };

  recorder.start();
};

当用户提交他们的音频时,我使用Whisper来转录它(使用 medium.en 模型在大小和理解我的英语能力之间取得良好平衡):

def process_voice_command(request):
    audio_file = request.FILES.get('audio_file', None)
    file_name = default_storage.save(voice.name, voice)
    try:
        audio = whisper.load_audio(MEDIA_ROOT + file_name)
        audio = whisper.pad_or_trim(audio)
        result = self.model.transcribe(MEDIA_ROOT + file_name)
        text = result["text"].strip()
        Todo.objects.create(title=text)
    finally:
        default_storage.delete(file_name)

使用LLM使TODO应用程序执行操作
我不只是说我想做什么,而是想告诉TODO应用程序为我做事。例如,当我买牛奶时,我想告诉应用程序:“我买了牛奶”,并让它为我核对待办事项。
为了做到这一点,我使用了一个预先训练过的LLM和一些巧妙的提示工程。
我最初的计划是在本地运行LLM。然而,由于圣诞节假期,我的时间很短,所以我现在决定使用托管版本。我绝对不想被OpenAI锁定,所以我找到了一个强大的开源模型( mixtral-8x7b-instruct ),并使用OpenRouter查询托管版本。
这个想法的要点是:我有一个系统提示,向LLM解释它的任务是管理TODO。作为输出,我告诉模型我需要一个JSON格式的指令列表。指令可以是 add 、 complete 、 delete 和 error (当不确定要做什么时)。
首先,我使用OpenRouter聊天UI测试了一些提示。当我对提示感到满意时,我用所需的数据进行了一个简单的API调用

def get_command(self, text):  
 response = requests.post(
     url="https://openrouter.ai/api/v1/chat/completions",
     headers= {
         "Authorization" : f"Bearer {os.environ['OPENROUTER_KEY']}"
     },
     data=json.dumps({
         "model": "mistralai/mixtral-8x7b-instruct",
         "messages": [
             {"role": "system", "content": self.prompt + self.todo_to_string()},
             {"role": "user", "content": text},
         ]
     })
 )
 print(response.json()["choices"][0]["message"]["content"])
 return json.loads(response.json()["choices"][0]["message"]["content"])

然后,根据响应,我让它对数据库执行以下操作:

def process_voice_command(request):
    audio_file = request.FILES.get('audio_file', None)
    text = util.get_voice_text(audio_file)
    commands = util.get_command(text)
    for command in commands:
        action = command['action']
        if action == "add":
            util.add(command['text'])
        elif action == "complete":
            util.complete(command['task_id'])
        elif action == "delete":
            util.delete(command['task_id'])
        elif action == "error":
            messages.add_message(request, messages.ERROR, command['text'])
        else:
            print(f"Unknown action: {action}")

    return JsonResponse({'success': True}) 

这并不完美。主要问题是它容易提示注入,即用户可以告诉它做一些不应该做的事情,作为TODO文本的一部分。我还注意到,它甚至可以将TODO的文本解释为指令的一部分,而且事情变得非常混乱。
但我很惊讶这一切的效果如此之好!
我能够为我的TODO应用程序提供如下命令:

 - 添加彩虹的每一种颜色
 - 标记所有提到绿色和紫色之间颜色的待办事项
 - clean up completed todos 清理已完成的待办事项
 - 现在我的TODO应用程序拥有超能力!

与我的其他项目类似,我将该应用程序部署到Modal.com,供每个人玩。它使用容器内的本地SQLite数据库和5分钟 container_idle_timeout ,因此数据会在一段时间后重置。非常适合演示!

完整的源代码可在https://github.com/ivan-tolkunov/surukoto.欢迎PR!文章来源地址https://www.toymoban.com/news/detail-806521.html

到了这里,关于在人工智能时代,Django + 简单的 HTML + Whisper + mixtral-8x7b-instruct + SQLite 实现了一个 TODO应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python+Django+Mysql开发简单在线课程推荐系统简单教程 基于用户的协同过滤推荐算法 个性化课程推荐系统 爬虫 可视化数据分析 机器学习 人工智能 个性化推荐 相关推荐

    1、开发工具和使用技术 Python3及以上版本,Django3.6及以上版本,mysql8,navicat数据库管理工具或者sqlyog数据库管理工具,html页面,javascript脚本,jquery脚本,echarts.js可视化图表工具,自定义星星评分功能(使用font-awesome星星图标字体)等。 2、实现功能 前台首页地址:http://1

    2024年02月05日
    浏览(54)
  • AIGC迈向通用人工智能时代

    2023年1月30日,AIGC概念股突飞猛涨。一时间,AIGC再次站上风口浪尖。 AIGC(AI Generated Content)是指利用人工智能技术来生成内容,被认为是继UGC、PGC之后的新型内容生产方式,常见的 AI绘画、AI写作 等都属于AIGC的分支。 事实上,AIGC在这一波热议之前,早已悄然兴起。 这要从

    2024年02月09日
    浏览(59)
  • 人工智能时代AIGC绘画实战

    送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 送书第五期 《Kubernetes原生

    2024年02月05日
    浏览(51)
  • 人工智能与自动驾驶:智能出行时代的未来之路

           首先,我们先来说下什么是人工智能, 人工智能 (Artificial Intelligence,简称AI)是一门研究如何使计算机系统能够模拟、仿真人类智能的技术和科学领域。它涉及构建智能代理,使其能够感知环境、理解和学习知识,以及通过推理、决策和问题解决等方式与环境进行

    2024年02月03日
    浏览(63)
  • 走进人工智能|自动驾驶 开启智能出行新时代

    自动驾驶,也被称为无人驾驶或自动驾驶汽车,是指能够在没有人类干预的情况下自主地感知环境、决策和控制车辆行驶的技术和系统。 自动驾驶汽车是一种通过电脑系统实现无人驾驶的智能汽车。这种车辆依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作

    2024年02月14日
    浏览(41)
  • 人工智能大时代——AIGC综述

    模型按照输入输出的数据类型分类,目前主要包括9类。 有趣的是,在这些已发布大模型的背后,只有六个组织(OpenAI, Google, DeepMind, Meta, runway, Nvidia)参与部署了这些最先进的模型。 其主要原因是,为了能够估计这些模型的参数,必须拥有极其庞大的计算能力,以及在数据科

    2023年04月18日
    浏览(49)
  • 人工智能时代如何加强网络安全

    人工智能正在为软件开发人员赋予以前被认为难以想象的新能力。新的生成式人工智能可以提供复杂、功能齐全的应用程序、调试代码或使用简单的自然语言提示添加内嵌注释。 它已准备好以指数方式推进低代码自动化。但与此同时,新一代人工智能可能会为不良行为者提供

    2024年02月13日
    浏览(53)
  • 人工智能的时代---AI的影响

           人工智能(AI)是当前科技领域的一个热门话题,它正在以前所未有的速度改变着我们的生活方式和工作方式。从智能家居到自动驾驶,从智能医疗到智能金融,人工智能正在渗透到我们生活的方方面面。在这篇文章中,我们将从人工智能的领域、人工智能的应用以

    2024年02月05日
    浏览(53)
  • 步入AIGC时代,展望人工智能发展

    3 月 18 日,由中国图象图形学学会 ( CSIG ) 主办,合合信息、 CSIG 文档图像分析与识别专业委员会联合承办的 “ CSIG 企业行 ” 系列活动取得了圆满成功。活动主题为“图文智能处理与多场景应用技术展望”,活动中重点分享了图像文档处理中的结构建模、底层视觉技术、跨媒

    2024年02月02日
    浏览(43)
  • 人工智能时代:AIGC的横空出世

    🌈个人主页: 聆风吟 🔥系列专栏: 数据结构、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 随着人工智能技术的不断发展,我们进入了一个信息爆炸的时代,信息量庞大,但也难免产生了信息过载的问题。为了解决这一问题,人工智能生成内容技术(AIGC)应运

    2024年02月05日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包