基于DashScope+Streamlit构建你的机器学习助手(入门级)

news2025/1/14 10:25:44

前言

在LLM(大语言模型)盛行的今天,博主越来越感觉到AI(人工智能)的潜力被“无限”激发了。它为什么会突然间完成“鱼跃龙门”呢? 博主认为基础设施(也可以称为算力)的完善和“天才”式的构思,是本次“盛宴”的幕后功臣。一个点子,可以改变一个领域,甚至重塑我们的工作习惯和生活方式。我想LLM作为AI新势力,有可能改变整个AI的生态。

今天,博主通过一个示例,带领各位亲自构建一个大模型应用。说起应用,我想各位应该能够理解了。比如一个聊天机器人、一个翻译助手,一个问答助手、又比如是一个创作助手等。那么本文就以一个简单的大模型为基础,构建一个属于你自己的机器学习助手。

首先来看这个小助手的“五脏六腑”是什么,跟着博主来一趟揭秘之旅吧。

一、DashScope入门

DashScope(模型服务灵积)是阿里推出的一款模型服务:

它通过围绕模型为中心,致力于为AI应用开发者提供品类丰富、数量众多的模型选择,并通过API接口为其提供开箱即用、能力卓越、成本经济的模型服务。各领域模型的能力均可通过DashScope统一的API和SDK来实现被不同业务系统集成,AI应用开发和模型效果调优的效率将因此得以激发,助力开发者释放灵感、创造价值。

一句话总结:这是一款模型框架,你可以通过它的API或SDK调用已内置的模型,创建自己的大模型应用。

博主曾经有一篇文章(基于Python的大模型学习手册(入门级))对DashScope SDK方式进行了介绍,可以参考它快速完成安装调试,这里不再赘述了。

接下来小助手需要一个face(门面),我们就选择Streamlit吧。

二、Streamlit入门

在这里插入图片描述

1. 简介

Streamlit is an open-source Python framework for data scientists and AI/ML engineers to deliver dynamic data apps with only a few lines of code.

一句话总结:Streamlit是一个开源的python框架,你通过几行代码就可以快速构建一个基于动态数据的应用,常用于数据科学和AI/ML工程领域。

2. 安装

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlit 

安装完成后,可在pycharm的terminal窗口,输入: streamlit hello,回车后,根据提示打开浏览器,访问默认demo:
在这里插入图片描述
打开页面如下,我们可以点击左侧导航,体验一番:
Hello
在这里插入图片描述
Animation_Demo
在这里插入图片描述
Plotting_Demo
在这里插入图片描述

至此,我们已备齐所有的必需工具,开始构建你的专属助手吧。

三、构建一个专属的问答助手

1. 设计前端

基于Streamlit组件,我们先简单设计一下前端的页面,一个输入框,一个提交按钮。效果如下:
在这里插入图片描述
核心代码:

    st.title('机器学习助手')
    with st.form('问答form'):
        text = st.text_area('请输入问题:')
        submitted = st.form_submit_button('提交')

2. 嵌入模型

博主选择阿里的通义千问大模型qwen-turbo,作为小助手的“知识引擎”。核心代码如下:

messages = [{'role': 'system', 'content': '你是一个优秀的机器学习专家'},
                {'role': 'user', 'content': input}]
responses = Generation.call(model="qwen-turbo",
                            messages=messages,
                            temperature=0.5,
                            stream=True, # 支持流式输出
                            incremental_output=True,# 设置为True,将开启增量输出模式,后面输出不会包含已经输出的内容
                            result_format='message')

3. 流式输出

支持小助手像打字机一样,逐字输出,提高使用体验。当然前提是完成模型设置。输出的核心代码:

ans = st.empty()
full_content = ''
for response in responses:
   if response.status_code == HTTPStatus.OK:
        full_content += response.output.choices[0]['message']['content']
        ans.info(full_content)
        # yield full_content
    else:
        print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
            response.request_id, response.status_code,
            response.code, response.message
        ))

4. 部署运行

我们通过pycharm—Terminal窗口,只需输入 streamlit run [绝对路径]/xx.py,回车就能访问了,如下图所示:
在这里插入图片描述
在这里插入图片描述

5. 问答演示

在这里插入图片描述
至此,你轻松收获了一个属于你自己的大模型应用,一个简易版的机器学习问答助手。

6. 完整代码

import dashscope
from http import HTTPStatus
from dashscope import Generation
import streamlit as st

dashscope.api_key = "你的dashscope api key"

def call_with_messages(input):
    messages = [{'role': 'system', 'content': '你是一个优秀的机器学习专家'},
                {'role': 'user', 'content': input}]
    responses = Generation.call(model="qwen-turbo",
                               messages=messages,
                               temperature=0.5,
                               stream=True, # 支持流式输出
                               incremental_output=True,# 设置为True,将开启增量输出模式,后面输出不会包含已经输出的内容
                               result_format='message')

    ans = st.empty()
    full_content = ''
    for response in responses:
        if response.status_code == HTTPStatus.OK:
            full_content += response.output.choices[0]['message']['content']
            ans.info(full_content)
            # yield full_content
        else:
            print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
                response.request_id, response.status_code,
                response.code, response.message
            ))


if __name__ == '__main__':

    st.title('机器学习助手')
    with st.form('问答form'):
        text = st.text_area('请输入问题:')
        submitted = st.form_submit_button('提交')
        if submitted:
            # st.write_stream(call_with_messages(text))
            call_with_messages(text)

结语

通过DashScope+Streamlit组合,我们可以轻松create一个大模型应用。相信通过此文,你可以get人生第一个大模型之体验!

走过的,路过的,点点赞,收收藏哦,欢迎指导!


精彩回顾

基于LangChain的大模型学习手册(入门级)
基于Python的大模型学习手册(入门级)


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2084311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java-异常处理try catch finally throw和throws

在 Java 中,异常处理机制是通过 try, catch, finally, throw和 throws 这几个关键字来实现的。以下 是这些关键字的基本用途和它们之间的区别: public class ExceptionHandlingExample {public static void main(String[] args) {try {processSomething();} catch (Exceptio…

【视频讲解】SMOTEBoost、RBBoost和RUSBoost不平衡数据集的集成分类酵母数据集、治癌候选药物|数据分享...

全文链接:https://tecdat.cn/?p37502 分析师:Zilin Wu 在当今的大数据时代,科研和实际应用中常常面临着海量数据的处理挑战。在本项目中,我们拥有上万条数据,这既是宝贵的资源,也带来了诸多难题。一方面&a…

RFFT:数据与代码已开源,京东推出广告图生成新方法 | ECCV 2024

论文将多模态可靠反馈网络(RFNet)结合到一个循环生成图片过程中,可以增加可用的广告图片数量。为了进一步提高生产效率,利用RFNet反馈进行创新的一致条件正则化,对扩散模型进行微调(RFFT)&#…

行业机遇!程序员:如何选择适合自己的就业方向?

随着科技的不断进步和发展,程序员的就业前景也越来越广阔。而在这个快速发展的行业中, 在各个领域都有着广泛的应用,信息技术的迅猛发展使得程序员在现代社会中占据了举足轻重的地位。从软件开发到网络安全,再到人工智能&#xf…

超越Text2Video-Zero|无需额外训练,条件生成、专门生成和指令引导的视频编辑全搞定!

论文链接:https://arxiv.org/pdf/2407.21475 github链接: https://densechen.github.io/zss/ 亮点直击 本文提出了一种新颖的zero-shot视频采样算法,该算法能够直接从预训练的图像扩散模型中采样高质量的视频片段。 本文提出了一个依赖噪声模…

青岛实训day33(8/21)

1、配置一主二从mysql 1. mycat对mysql8不完全支持 2. mysql8主从问题不大get_pub_key1 3. gtids事务复制 4. 删除/etc/my.cnf 5. 同步data文件需要先停用mysql服务,删除data目录中的auto.cnf 6. gtid模式以及经典模式都需要锁表 flush tables with read lock;unlock tables;…

解决渠道低价问题可以这样做

在品牌渠道的发展之路上,经销商低价、乱价、窜货以及非经销商的不受管控往往会引发渠道混乱,这已然成为众多品牌难以回避的难题。那么,面对这些各异的渠道问题,究竟该如何施展出不同的治理妙招呢?难道仅有单一的处罚手…

priority_queue模拟

一、什么是priority_queue? priority_queue是C标准库中的一个容器适配器,用于实现优先队列(priority queue)的数据结构。优先队列是一种特殊的队列,其中的元素按照一定的优先级进行排序,每次取出的元素都是优先级最高…

OpenAI融资谈判 估值或超1000亿美元

🦉 AI新闻 🚀 OpenAI融资谈判 估值或超1000亿美元 摘要:OpenAI正在进行一轮融资谈判,预计估值将超过1000亿美元,主导投资方为Thrive Capital,将投资10亿美元。今年早些时候,OpenAI估值已超过8…

vue按钮弹框

在Vue中实现按钮点击后弹出对话框(弹框)的功能,通常可以使用一些Vue的UI组件库,如Element UI、Vuetify、BootstrapVue等,这些库提供了丰富的组件,包括对话框(Dialog)、模态框&#x…

一般中小型企业网站用哪种类型的SSL证书?

对于一般中小型企业网站,常用的SSL证书类型主要包括域名验证型SSL证书(DV SSL证书)和组织验证型SSL证书(OV SSL证书)。 域名验证型SSL证书(DV SSL证书) 特点: 验证简单&#xff1…

android 将新建的底部导航的demo,修改首页默认显示的字符串为helloworld。

1、先上个图,demo建好了以后,默认显示一个字符串: 2、这个demo的结构: activity_main.xml中用navGraph与其关联。 3、增加方法,给text赋值: package com.example.helloworld.ui.homeimport androidx.lifec…

三级_网络技术_53_应用题

一、 请根据下图所示网络结构回答下列问题。 1.设备1应选用__________网络设备。 2.若对整个网络实施保护,防火墙应加在图中位置1~3的__________位置上。 3.如果采用了入侵检测设备对进出网络的流量进行检测,并且探测器是在交换机1上通过端口镜像方式…

Launcher3 长按Hotseat图标,显示删除角标(红底白杠杠用于删除图标或者显示应用未读消息数量)

基于Android 13,Launcher3实现需求: 1. 长按Hotseat的图标显示红色删除角标 2. 点击角标,删除图标并保存到Database 3.点击其他地方,取消编辑hotseat图标模式 实现效果: 实现原理: 图标是由BubbleTextView来是实现…

剑侠情缘c#版(游戏源码+资源+工具+程序),百度云盘下载,大小1.68G

剑侠情缘c#版(游戏源码资源工具程序),c#开发的,喜欢研究游戏的可以下载看看。亲测可进游戏。 剑侠情缘c#版(游戏源码资源工具程序)下载地址: 通过网盘分享的文件:【游戏】剑侠情缘c#…

jmeter如何把一个请求的响应中部分字段提取出来便于下个请求用

jmeter如何把一个请求的响应中部分字段提取出来便于下个请求用,可以通过json提取器提取,如果提取多个,就设置多个json提取。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dd5afb1fca3f4e31b636e17e11e8dfc3.png

2.10鼠标事件

目录 实验原理 实验代码 运行结果 文章参考 实验原理 在 OpenCV 中存在鼠标的操作,比如左键单击、双击等。对于 OpenCV 来讲,用户的鼠标操作被认为发生了一个鼠标事件,需要对这个鼠标事件进行处理,这就是事件的响应。下面我们…

手机ip频繁跳动的原因是什么?手机ip地址老是变怎么解决

在当今数字化时代,‌手机已成为我们生活中不可或缺的一部分。‌然而,‌有些用户可能会遇到手机IP地址频繁变动的问题,‌这不仅可能影响网络连接的稳定性,‌还可能对特定的在线活动造成困扰。‌本文将深入探讨手机IP频繁跳动的原因…

传输大咖36 | 镭速轻松解决医疗卫生行业跨网文件传输难题

在医疗领域,医疗数据的关键性显而易见。病历详尽记载与医学影像数据等,均为确保精确诊断与治疗成效的基石。但是,医疗数据量的迅猛增长使得传统文件传输方法的不足之处日益凸显,难以跟上现代医学的步伐。特别是在跨网文件交换这一…

SSM框架之Mybatis

前言 什么是框架? 框架就是对技术的封装,将基础的技术进行封装,便于程序员使用,提高开发效率 ssm框架是什么? ssm包括spring、springMvc、Mybatis,是后端企业级开发时会使用到的框架组合,在…