在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣使用Streamlit創建AutoGen用戶界面?

冬至子 ? 來源:思否AI ? 作者:思否AI ? 2023-11-08 14:56 ? 次閱讀

AutoGen作為一個最大化LLM(如GPT-4)能力的框架而脫穎而出。由微軟研究院開發的AutoGen通過提供一種自動化、優化和編排工作流的方法,簡化了復雜的、基于多代理llm的應用程序的創建。我們在以前的文章中也有過介紹,你可以與許多GPT交談,并且GPT和GPT之間也可以互相交談。每個GPT都是它自己的“代理”,并在總體業務流程中扮演特殊角色。

但是AutoGen是用命令行模式進行交互的,這對我們的輸入來說非常不方便,所以這次我們來對其進行改造,使用Streamlit創建一個web界面,這樣可以讓我們更好的與其交互。

這個項目略微粗糙,但它應該為為AutoGen代理創建簡單的ui提供了一個很好的起點。

這里需要注意的是:

明確要求不要運行代碼或將文件存儲在本地,因為這是Streamlit限制—而不是AutoGen限制。

簡單介紹AutoGen

我們之前已經介紹過AutoGen,所以這里再做個簡單的回顧:

AutoGen自動化了LLM工作流,這在開發人員制作越來越復雜的基于LLM的應用程序時至關重要。

它提供了可定制的代理,這些代理不僅可以與用戶進行自動對話,還可以在代理之間進行自動對話。

AutoGen代理可以合并llm、人工輸入和其他工具的組合,克服每個組件單獨的局限性。無論是代碼生成、執行、調試還是復雜任務解決,AutoGen代理都可以處理各種高級操作。

創建Streamlit應用

我們的目標是這樣的:

我們先安裝如下包:

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

然后創建

app.py

首先是導入包:

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

streamlit用于創建UI。Asyncio對于異步控制流是必需的,它允許聊天響應。Autogen為聊天代理提供了類。

然后使用Streamlit的write函數設置應用的標題:

st.write("# AutoGen Chat Agents")

這一行將在UI的頂部顯示標題“AutoGen Chat Agents”。

然后就是創建自定義代理類,需要擴展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)

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

然后就是使用Streamlit的側邊欄功能進行配置:

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的付費API了

然后就是創建主聊天界面并處理輸入:

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
                 }
             ]
         }

上面代碼創建一個聊天輸入字段,如果用戶沒有完成配置,將顯示一個警告。

自定義我們的代理,并為異步聊天設置事件循環:

# 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)

代理的配置需要根據我們的需求自行定義,我們這里只給一個演示。除此以外還要使用asyncio為應用程序處理異步操作做好準備。

最后定義并運行異步函數來啟動聊天:

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())

當發送消息時,就可以在用戶代理和助理代理之間發起聊天,結果如下:

總結

將AutoGen代理集成到Streamlit應用程序中,為創建由大型語言模型驅動的交互式智能ui提供了無數可能性。通過我們的以上代碼可以建立一個響應式聊天界面,利用AutoGen的高級功能。AutoGen和Streamlit的結合為實現我們的需求提供了一個強大且對開發人員友好的途徑。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • GPT
    GPT
    +關注

    關注

    0

    文章

    368

    瀏覽量

    15856
  • LLM
    LLM
    +關注

    關注

    1

    文章

    316

    瀏覽量

    631
收藏 人收藏

    評論

    相關推薦

    《AI Agent 應用與項目實戰》閱讀心得2——客服機器人、AutoGen框架 、生成式代理

    ,Airtable負責知識庫管理,Voiceflow處理對話流程設計,再配合GPT模型進行自然語言理解和生成。前端功能設計中引入了用戶意圖識別模塊,能夠準確捕捉用戶的查詢意圖并進行多維度分類,這種分類機制使得系統能夠
    發表于 02-25 21:59

    如何快速創建用戶自定義Board和App工程

    概述自HPM_SDKv1.7.0發布開始,在HPM_ENV中新增了user_template文件夾,以方便用戶快速創建自定義的Board和App工程。user_template是用戶模板工程,
    的頭像 發表于 02-08 13:38 ?314次閱讀
    如何快速<b class='flag-5'>創建</b><b class='flag-5'>用戶</b>自定義Board和App工程

    hyper-v 備份,hyper-v怎樣進行虛擬機的創建

    虛擬機技術打破了傳統計算機的限制,為我們帶來了全新的計算機模式。今天給大家介紹hyper-v怎樣進行虛擬機的創建? ? ?hyper-v怎樣進行虛擬機的創建? ? ?使用PowerSh
    的頭像 發表于 02-05 14:54 ?270次閱讀
    hyper-v 備份,hyper-v<b class='flag-5'>怎樣</b>進行虛擬機的<b class='flag-5'>創建</b>

    eIQ Time Series Studio工具使用攻略(三)-工程創建

    用戶打開TimeSeries Studio后,首先進入Home界面,如需創建用戶工程,需要在主界面找到“Tasks”模塊,然后選擇需要
    的頭像 發表于 01-09 16:12 ?1381次閱讀
    eIQ Time Series Studio工具使用攻略(三)-工程<b class='flag-5'>創建</b>

    Linux中的用戶創建

    Linux中的用戶創建 用戶的類型 超級管理用戶: 權限最高的用戶(uid:0) #uid:是用戶
    的頭像 發表于 12-20 14:24 ?531次閱讀
    Linux中的<b class='flag-5'>用戶</b>與<b class='flag-5'>創建</b>

    SOLIDWORKS 2025直觀的用戶界面

    在工程設計領域,SOLIDWORKS作為三維CAD軟件的佼佼者,一直致力于通過技術創新提升用戶體驗。隨著SOLIDWORKS 2025版本的發布,其在界面設計上的直觀性與易用性再次成為行業關注的焦點
    的頭像 發表于 12-12 17:22 ?498次閱讀

    DRV8821-23 EVM圖形用戶界面

    電子發燒友網站提供《DRV8821-23 EVM圖形用戶界面.pdf》資料免費下載
    發表于 12-05 15:08 ?0次下載
    DRV8821-23 EVM圖形<b class='flag-5'>用戶</b><b class='flag-5'>界面</b>

    DRV8800-01 EVM圖形用戶界面

    電子發燒友網站提供《DRV8800-01 EVM圖形用戶界面.pdf》資料免費下載
    發表于 12-02 11:07 ?0次下載
    DRV8800-01 EVM圖形<b class='flag-5'>用戶</b><b class='flag-5'>界面</b>

    圖形用戶界面與命令行接口的比較

    在計算機科學和信息技術領域,用戶與計算機交互的方式主要分為兩種:圖形用戶界面(GUI)和命令行接口(CLI)。這兩種界面各有優勢和局限性,適用于不同的場景和
    的頭像 發表于 11-12 14:38 ?946次閱讀

    加賀富儀艾電子CGI Studio助您創建嵌入式用戶界面解決方案

    人機交互界面(HMI)作為人與技術之間的溝通界面,正不斷拓展其在各行業的應用邊界,成為數字時代不可或缺的一部分。從工業控制、汽車儀表盤到智能家居、醫療設備,HMI技術的應用市場呈現出多元化和深度滲透的特點。
    的頭像 發表于 08-22 14:48 ?746次閱讀

    如何使用MATLAB創建預測模型

    MATLAB 簡介 MATLAB 是由 MathWorks 公司開發的,它提供了一個集成的計算環境,包括一個命令行界面、一個圖形用戶界面、一個編程語言和一個調試器。MATLAB 的主要優勢在于其矩陣運算能力,這使得它在處理大規
    的頭像 發表于 07-11 14:29 ?959次閱讀

    人機界面應具備的特性是什么

    人機界面(Human-Machine Interface,簡稱HMI)是人與機器之間進行信息交流和控制的媒介。一個優秀的人機界面能夠提高工作效率、降低操作難度、增強用戶體驗。本文將從多個方面探討人機
    的頭像 發表于 07-01 14:24 ?1259次閱讀

    上位機軟件的用戶界面設計技巧

    在工業自動化、監控和控制系統等領域,上位機軟件扮演著至關重要的角色。作為用戶與系統交互的橋梁,上位機軟件的用戶界面(UI)設計不僅影響著用戶的使用體驗,還直接關系到系統的整體效率和可靠
    的頭像 發表于 06-28 16:37 ?2118次閱讀

    上位機控制界面用什么做好

    在設計上位機控制界面時,選擇合適的開發工具和框架至關重要。本文介紹如何創建一個優秀的上位機控制界面。 引言 上位機控制界面是實現人機交互的關鍵環節,它允許
    的頭像 發表于 06-06 10:54 ?1393次閱讀

    OpenAI發布ChatGPT桌面版,優化用戶界面,免費提供GPT-4o模型

    此外,ChatGPT 集成了優化后的用戶界面,支持用戶在同一界面下同時運行 ChatGPT 及其它程序,并可通過語音或文字方式向其提問。
    的頭像 發表于 05-14 11:12 ?780次閱讀
    主站蜘蛛池模板: 性猛交xxxx乱大交孕妇 | 国产午夜视频高清 | 国产午夜视频在永久在线观看 | 99热精品一区| 欧美作爱福利免费观看视频 | 婷婷春色| 亚洲手机看片 | 91精品国产亚洲爽啪在线影院 | 成年人网站黄色 | 欧美一级免费观看 | 一级片黄色免费 | xxxx欧美 | 人人插人人草 | 色校园| 天天干天天操天天碰 | 欧美黄色片在线播放 | 天堂在线网 | www.久久在线 | 啪啪小视频网站 | 日日骑夜夜操 | 白浆喷射| 色中色综合 | 午夜影视啪啪免费体验区深夜 | 毛片又大又粗又长又硬 | 国产日本在线播放 | 熊出没之环球大冒险旧版免费观看 | 久久天天操 | 69xxxx日本老师 | 4438x成人网全国最大 | 国产成人经典三级在线观看 | 青青伊人91久久福利精品 | 国内精品91久久久久 | 三级网站免费看 | 天天干夜夜怕 | 亚洲jjzzjjzz在线观看 | 俺要色 | 在线免费黄色 | 美女很黄很黄是免费的·无遮挡网站 | 免费久久精品国产片香蕉 | 欧美成人免费午夜全 | 日本aaaaa毛片动漫 |