91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣使用Streamlit創(chuàng)建AutoGen用戶界面?

冬至子 ? 來(lái)源:思否AI ? 作者:思否AI ? 2023-11-08 14:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AutoGen作為一個(gè)最大化LLM(如GPT-4)能力的框架而脫穎而出。由微軟研究院開(kāi)發(fā)的AutoGen通過(guò)提供一種自動(dòng)化、優(yōu)化和編排工作流的方法,簡(jiǎn)化了復(fù)雜的、基于多代理llm的應(yīng)用程序的創(chuàng)建。我們?cè)谝郧暗奈恼轮幸灿羞^(guò)介紹,你可以與許多GPT交談,并且GPT和GPT之間也可以互相交談。每個(gè)GPT都是它自己的“代理”,并在總體業(yè)務(wù)流程中扮演特殊角色。

但是AutoGen是用命令行模式進(jìn)行交互的,這對(duì)我們的輸入來(lái)說(shuō)非常不方便,所以這次我們來(lái)對(duì)其進(jìn)行改造,使用Streamlit創(chuàng)建一個(gè)web界面,這樣可以讓我們更好的與其交互。

這個(gè)項(xiàng)目略微粗糙,但它應(yīng)該為為AutoGen代理創(chuàng)建簡(jiǎn)單的ui提供了一個(gè)很好的起點(diǎn)。

這里需要注意的是:

明確要求不要運(yùn)行代碼或?qū)⑽募鎯?chǔ)在本地,因?yàn)檫@是Streamlit限制—而不是AutoGen限制。

簡(jiǎn)單介紹AutoGen

我們之前已經(jīng)介紹過(guò)AutoGen,所以這里再做個(gè)簡(jiǎn)單的回顧:

AutoGen自動(dòng)化了LLM工作流,這在開(kāi)發(fā)人員制作越來(lái)越復(fù)雜的基于LLM的應(yīng)用程序時(shí)至關(guān)重要。

它提供了可定制的代理,這些代理不僅可以與用戶進(jìn)行自動(dòng)對(duì)話,還可以在代理之間進(jìn)行自動(dòng)對(duì)話。

AutoGen代理可以合并llm、人工輸入和其他工具的組合,克服每個(gè)組件單獨(dú)的局限性。無(wú)論是代碼生成、執(zhí)行、調(diào)試還是復(fù)雜任務(wù)解決,AutoGen代理都可以處理各種高級(jí)操作。

創(chuàng)建Streamlit應(yīng)用

我們的目標(biāo)是這樣的:

我們先安裝如下包:

aiohttp==3.8.6
 aiosignal==1.3.1
 altair==5.1.2
 async-timeout==4.0.3
 attrs==23.1.0
 blinker==1.6.3
 cachetools==5.3.2
 certifi==2023.7.22
 charset-normalizer==3.3.1
 click==8.1.7
 diskcache==5.6.3
 docker==6.1.3
 FLAML==2.1.1
 frozenlist==1.4.0
 gitdb==4.0.11
 GitPython==3.1.40
 idna==3.4
 importlib-metadata==6.8.0
 Jinja2==3.1.2
 jsonschema==4.19.1
 jsonschema-specifications==2023.7.1
 markdown-it-py==3.0.0
 MarkupSafe==2.1.3
 mdurl==0.1.2
 multidict==6.0.4
 numpy==1.26.1
 openai==0.28.1
 packaging==23.2
 pandas==2.1.2
 Pillow==10.1.0
 protobuf==4.24.4
 pyarrow==13.0.0
 pyautogen==0.1.13
 pydeck==0.8.1b0
 Pygments==2.16.1
 python-dateutil==2.8.2
 python-dotenv==1.0.0
 pytz==2023.3.post1
 referencing==0.30.2
 requests==2.31.0
 rich==13.6.0
 rpds-py==0.10.6
 six==1.16.0
 smmap==5.0.1
 streamlit==1.28.0
 tenacity==8.2.3
 termcolor==2.3.0
 toml==0.10.2
 toolz==0.12.0
 tornado==6.3.3
 tqdm==4.66.1
 typing_extensions==4.8.0
 tzdata==2023.3
 tzlocal==5.2
 urllib3==2.0.7
 validators==0.22.0
 websocket-client==1.6.4
 yarl==1.9.2
 zipp==3.17.0

然后創(chuàng)建

app.py

首先是導(dǎo)入包:

import streamlit as st
 import asyncio
 from autogen import AssistantAgent, UserProxyAgent

streamlit用于創(chuàng)建UI。Asyncio對(duì)于異步控制流是必需的,它允許聊天響應(yīng)。Autogen為聊天代理提供了類(lèi)。

然后使用Streamlit的write函數(shù)設(shè)置應(yīng)用的標(biāo)題:

st.write("# AutoGen Chat Agents")

這一行將在UI的頂部顯示標(biāo)題“AutoGen Chat Agents”。

然后就是創(chuàng)建自定義代理類(lèi),需要擴(kuò)展AutoGen的AssistantAgent和UserProxyAgent:

class TrackableAssistantAgent(AssistantAgent):
     def _process_received_message(self, message, sender, silent):
         with st.chat_message(sender.name):
             st.markdown(message)
         return super()._process_received_message(message, sender, silent)
 
 class TrackableUserProxyAgent(UserProxyAgent):
     def _process_received_message(self, message, sender, silent):
         with st.chat_message(sender.name):
             st.markdown(message)
         return super()._process_received_message(message, sender, silent)

這些類(lèi)覆蓋一個(gè)_process_received_message方法,在Streamlit聊天小部件中顯示接收到的消息,為用戶提供實(shí)時(shí)更新。

然后就是使用Streamlit的側(cè)邊欄功能進(jìn)行配置:

selected_model = None
 selected_key = None
 
 with st.sidebar:
     st.header("OpenAI Configuration")
     selected_model = st.selectbox("Model", ['gpt-3.5-turbo', 'gpt-4'], index=1)
     selected_key = st.text_input("API Key", type="password")

這里可以使用我們上次文章的本地 LLM 方案,這樣就不用使用openai的付費(fèi)API了

然后就是創(chuàng)建主聊天界面并處理輸入:

with st.container():
     # for message in st.session_state["messages"]:
     #    st.markdown(message)
 
     user_input = st.chat_input("Type something...")
     if user_input:
         if not selected_key or not selected_model:
             st.warning(
                 'You must provide valid OpenAI API key and choose preferred model', icon="??")
             st.stop()
 
         llm_config = {
             "request_timeout": 600,
             "config_list": [
                 {
                     "model": selected_model,
                     "api_key": selected_key
                 }
             ]
         }

上面代碼創(chuàng)建一個(gè)聊天輸入字段,如果用戶沒(méi)有完成配置,將顯示一個(gè)警告。

自定義我們的代理,并為異步聊天設(shè)置事件循環(huán):

# create an AssistantAgent instance named "assistant"
 assistant = TrackableAssistantAgent(
 name="assistant", llm_config=llm_config)
 
 # create a UserProxyAgent instance named "user"
 user_proxy = TrackableUserProxyAgent(
 name="user", human_input_mode="NEVER", llm_config=llm_config)
 
 # Create an event loop
 loop = asyncio.new_event_loop()
 asyncio.set_event_loop(loop)

代理的配置需要根據(jù)我們的需求自行定義,我們這里只給一個(gè)演示。除此以外還要使用asyncio為應(yīng)用程序處理異步操作做好準(zhǔn)備。

最后定義并運(yùn)行異步函數(shù)來(lái)啟動(dòng)聊天:

async def initiate_chat():
 await user_proxy.a_initiate_chat(
 assistant,
 message=user_input,
 )
 
 # Run the asynchronous function within the event loop
 loop.run_until_complete(initiate_chat())

當(dāng)發(fā)送消息時(shí),就可以在用戶代理和助理代理之間發(fā)起聊天,結(jié)果如下:

總結(jié)

將AutoGen代理集成到Streamlit應(yīng)用程序中,為創(chuàng)建由大型語(yǔ)言模型驅(qū)動(dòng)的交互式智能ui提供了無(wú)數(shù)可能性。通過(guò)我們的以上代碼可以建立一個(gè)響應(yīng)式聊天界面,利用AutoGen的高級(jí)功能。AutoGen和Streamlit的結(jié)合為實(shí)現(xiàn)我們的需求提供了一個(gè)強(qiáng)大且對(duì)開(kāi)發(fā)人員友好的途徑。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • GPT
    GPT
    +關(guān)注

    關(guān)注

    0

    文章

    368

    瀏覽量

    16869
  • LLM
    LLM
    +關(guān)注

    關(guān)注

    1

    文章

    346

    瀏覽量

    1329
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ESP32開(kāi)發(fā)板創(chuàng)建同步WebServer網(wǎng)頁(yè)服務(wù)器

    ESP32 內(nèi)置了 Wi-Fi 功能,能夠作為網(wǎng)頁(yè)服務(wù)器(Web Server)向網(wǎng)絡(luò)中的其他設(shè)備提供服務(wù)。通過(guò)在 ESP32 上運(yùn)行網(wǎng)頁(yè)服務(wù)器,可以創(chuàng)建基于瀏覽器的用戶界面,用于監(jiān)控傳感器數(shù)據(jù)或控制設(shè)備狀態(tài),是實(shí)現(xiàn)物聯(lián)網(wǎng)(Io
    的頭像 發(fā)表于 01-30 11:36 ?211次閱讀
    ESP32開(kāi)發(fā)板<b class='flag-5'>創(chuàng)建</b>同步WebServer網(wǎng)頁(yè)服務(wù)器

    小藝開(kāi)放平臺(tái)快速創(chuàng)建鴻蒙智能體

    與預(yù)覽工具體驗(yàn)當(dāng)前智能體的實(shí)際效果,來(lái)幫助我們進(jìn)行智能體的問(wèn)題定位和優(yōu)化改進(jìn)。 創(chuàng)建智能體時(shí),開(kāi)場(chǎng)對(duì)話可以讓用戶快速了解你的智能體功能或場(chǎng)景設(shè)定故事背景,預(yù)置問(wèn)題可以讓用戶通過(guò)點(diǎn)擊快速體驗(yàn)智能體的能力,角色指令(prompt)直
    發(fā)表于 01-19 11:00

    瑞薩電子攜手LVGL PRO推進(jìn)嵌入式圖形用戶界面開(kāi)發(fā)

    隨著嵌入式設(shè)備對(duì)用戶體驗(yàn)要求的不斷提升,圖形用戶界面(GUI)成為產(chǎn)品開(kāi)發(fā)越來(lái)越重要的一環(huán)。作為目前最流行的開(kāi)源嵌入式圖形庫(kù)之一的LVGL,最近就推出了自己的商業(yè)化專(zhuān)業(yè)UI編輯器LVGL PRO 1.0版本。
    的頭像 發(fā)表于 11-21 10:23 ?1555次閱讀
    瑞薩電子攜手LVGL PRO推進(jìn)嵌入式圖形<b class='flag-5'>用戶</b><b class='flag-5'>界面</b>開(kāi)發(fā)

    AppTest邀請(qǐng)測(cè)試---創(chuàng)建測(cè)試群組(一)

    ”,進(jìn)入“測(cè)試用戶”頁(yè)面,點(diǎn)擊右上角“創(chuàng)建測(cè)試群組”。 在彈出的“創(chuàng)建測(cè)試群組”窗口,填寫(xiě)“群組名稱(chēng)”,點(diǎn)擊“創(chuàng)建”。 群組名稱(chēng)不超過(guò)50個(gè)字符。 測(cè)試群組
    發(fā)表于 09-12 16:22

    基于LDC-HALL-HMI-EVM的人機(jī)界面評(píng)估模塊技術(shù)解析

    Texas Instruments LDC-HALL-HMI-EVM評(píng)估模塊 (EVM) 采用電感和霍爾效應(yīng)傳感技術(shù)提供人機(jī)界面。Texas Instruments LDC-HALL-HMI-EVM
    的頭像 發(fā)表于 09-11 09:49 ?814次閱讀
    基于LDC-HALL-HMI-EVM的人機(jī)<b class='flag-5'>界面</b>評(píng)估模塊技術(shù)解析

    瑞薩電子高級(jí)語(yǔ)音用戶界面解決方案

    語(yǔ)音用戶界面(VUI)正在徹底改變我們與技術(shù)交互的方式,實(shí)現(xiàn)免提、無(wú)縫的通信。通過(guò)整合先進(jìn)語(yǔ)音命令識(shí)別功能,再加上語(yǔ)音反欺騙和說(shuō)話人識(shí)別功能,開(kāi)發(fā)人員可以構(gòu)建具有更高安全性、個(gè)性化和功能的系統(tǒng)。將
    的頭像 發(fā)表于 08-27 09:41 ?767次閱讀
    瑞薩電子高級(jí)語(yǔ)音<b class='flag-5'>用戶</b><b class='flag-5'>界面</b>解決方案

    如何使用 SEGGER emWin AppWizard 工具為儀表板界面設(shè)計(jì)圖形用戶界面

    如何使用 SEGGER emWin AppWizard 工具為儀表板界面設(shè)計(jì)圖形用戶界面 (GUI)。它集成了控制 MA35H0 系列評(píng)估板上的 LED 和按鈕的功能。
    發(fā)表于 08-19 07:23

    STM32CubeIDE1.16.1創(chuàng)建新的STM32工程之后沒(méi)有自動(dòng)彈出引腳配置界面,怎么解決?

    之前創(chuàng)建工程之后都會(huì)自動(dòng)彈出配置引腳的界面,也會(huì)有一個(gè).ioc文件,但是今天無(wú)論怎么嘗試新建工程,都沒(méi)有彈出引腳配置界面,求助
    發(fā)表于 07-29 14:23

    迅為RK3588開(kāi)發(fā)板Android13系統(tǒng)掛載samba共享文件夾-怎么開(kāi)啟Windows共享目

    訪問(wèn),但是訪問(wèn)基本不成功,所以需要指定用戶與密碼去進(jìn)行訪問(wèn),提升安全性。 1.創(chuàng)建共享用戶 首先“此電腦”鼠標(biāo)右鍵選擇“管理”,如下圖所示: 彈出如下界面,選擇本地
    的頭像 發(fā)表于 06-25 10:25 ?523次閱讀
    迅為RK3588開(kāi)發(fā)板Android13系統(tǒng)掛載samba共享文件夾-怎么開(kāi)啟Windows共享目

    橫河DLM3024混合信號(hào)示波器優(yōu)點(diǎn)和特點(diǎn) 觸屏式用戶界面

    橫河DLM3024混合信號(hào)示波器觸屏式用戶界面能為用戶提供直觀的操作??梢酝ㄟ^(guò)熟悉的點(diǎn)選、拖動(dòng),外擴(kuò)/里捏操作來(lái)快速設(shè)置測(cè)量、光標(biāo)、縮放框、波形顯示區(qū)域等項(xiàng)目,傳統(tǒng)按鈕和按鍵的使用也很方便,因此
    的頭像 發(fā)表于 06-13 18:17 ?733次閱讀
    橫河DLM3024混合信號(hào)示波器優(yōu)點(diǎn)和特點(diǎn) 觸屏式<b class='flag-5'>用戶</b><b class='flag-5'>界面</b>能

    瑞芯微RK3506(3核A7@1.5GHz+雙網(wǎng)口+雙CAN-FD)工業(yè)開(kāi)發(fā)板—圖形用戶界面(GUI)開(kāi)發(fā)手冊(cè)

    本文主要說(shuō)明Qt的圖形用戶界面(GUI)開(kāi)發(fā)流程,包括Qt程序自啟動(dòng)配置與案例介紹,旨在幫助開(kāi)發(fā)者完成產(chǎn)品開(kāi)發(fā)與測(cè)試。
    的頭像 發(fā)表于 06-03 14:27 ?1568次閱讀
    瑞芯微RK3506(3核A7@1.5GHz+雙網(wǎng)口+雙CAN-FD)工業(yè)開(kāi)發(fā)板—圖形<b class='flag-5'>用戶</b><b class='flag-5'>界面</b>(GUI)開(kāi)發(fā)手冊(cè)

    互聯(lián)世界中的人機(jī)界面 (HMI) 和網(wǎng)關(guān)

    、效率和用戶體驗(yàn)方面發(fā)揮著舉足輕重的作用。從消費(fèi)電子產(chǎn)品到汽車(chē)系統(tǒng),從工業(yè)自動(dòng)化到醫(yī)療設(shè)備,人機(jī)界面提供了直觀的界面,使用戶更容易控制、監(jiān)控復(fù)雜的系統(tǒng)。 同時(shí),網(wǎng)關(guān)還充當(dāng)各種網(wǎng)絡(luò)之間的
    的頭像 發(fā)表于 05-25 11:17 ?1041次閱讀
    互聯(lián)世界中的人機(jī)<b class='flag-5'>界面</b> (HMI) 和網(wǎng)關(guān)

    Analog Devices Inc. EVAL-ESS1-SYS可擴(kuò)展BMS解決方案套件

    Analog Devices EVAL-ESS1-SYS可擴(kuò)展BMS解決方案套件包含創(chuàng)建完整BMS解決方案堆棧所需的全部構(gòu)建塊。隨附的基于PC的圖形用戶界面提供直觀的界面,使
    的頭像 發(fā)表于 05-23 11:02 ?886次閱讀
    Analog Devices Inc. EVAL-ESS1-SYS可擴(kuò)展BMS解決方案套件

    在PLC中創(chuàng)建基于Web的人機(jī)界面可視化

    進(jìn)行維護(hù)操作期間。傳統(tǒng)的 HMI 交互方式往往需要人員親臨現(xiàn)場(chǎng),極為不便。針對(duì)此類(lèi)場(chǎng)景,西門(mén)子在所有 1500 系列 PLC 中集成了 Web 服務(wù)器,支持遠(yuǎn)程交互。通過(guò)“View Of Things”(物聯(lián)視圖)功能,用戶可直接在 PLC 內(nèi)部創(chuàng)建 HMI 可視化
    的頭像 發(fā)表于 05-06 10:00 ?4139次閱讀
    在PLC中<b class='flag-5'>創(chuàng)建</b>基于Web的人機(jī)<b class='flag-5'>界面</b>可視化

    GUI GUIDER 1.9.0創(chuàng)建LVGL9工程使用鍵盤(pán)問(wèn)題求解

    在使用 GUI GUIDER 1.9.0 創(chuàng)建LVLG9.2.1工程時(shí)候,設(shè)置中啟用鍵盤(pán),在其中一個(gè)子界面中使用鍵盤(pán)輸入。返回主界面時(shí)候,該鍵盤(pán)還存在,創(chuàng)建LVLG8 工程就沒(méi)這個(gè)問(wèn)題
    發(fā)表于 03-31 06:14