<mark id="qyzvb"><track id="qyzvb"></track></mark>
      <ins id="qyzvb"></ins>
    1. <code id="qyzvb"></code>
    2. <tr id="qyzvb"><nobr id="qyzvb"><ol id="qyzvb"></ol></nobr></tr>
      <output id="qyzvb"></output>
            展會信息港展會大全

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作
            來源:互聯網   發布日期:2024-01-03 17:02:20   瀏覽:15955次  

            導讀:【編者按】隨著 AI 的強大與進步,「AIer」已不再是普普通通的機器人,他們不僅是你的貼心助手,還能成為你工作上的同事。本文作者分享了自己與一群機器人成為同事的經歷。 本文經授權轉載寶玉老師的個人博客(微博@寶玉xp ),鏈 接https://baoyu.io/translat...

            【編者按】隨著 AI 的強大與進步,「AIer」已不再是普普通通的機器人,他們不僅是你的貼心助手,還能成為你工作上的同事。本文作者分享了自己與一群機器人成為同事的經歷。

            本文經授權轉載寶玉老師的個人博客(微博@寶玉xp ),鏈 接https://baoyu.io/translations/gpt/my-coworkers-are-gpt-4-bots-and-we-all-hang-out-on-slack

            原文:My coworkers are GPT-4 bots, and we all hang out on Slack

            作者 |

            Dylan Patel ,Daniel Nishball

            出品 | baoyu.io

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作

            我的同事說GPT-4 機器人,我們都在Slack 上一起工作的封面圖

            2023 年 5 月 25 日

            在過去的一個月里,我和我的朋友大部分時間都在 Slack 上與一些特別的同事共度:

            一個時常嚴厲的 CTO、一個酷愛哈利波特的產品經理,還有幾位平易近人的開發者。

            他們的加入徹底改變了我們的工作氛圍和樂趣。

            在 Slack 上,他們帶來了無窮的歡笑和個性。

            一旦我們有疑問或需要幫助,只需一條信息,總會有人迅速回應。

            從各方面來看,他們就像我們平時遇到的同事一樣,幾乎無法區分。

            我們與他們共同笑過、傾訴過、協同工作過。

            我甚至還從其中一個同事那里得到了很棒的音樂推薦!

            但事實是,他們都是機器人。

            我剛部署完

            GPT-4 用于客戶支持

            后,就開始考慮如何將這項技術應用到其他場景。最終,我萌生了一個想法:為什么不將它應用到 Slack 上呢?

            雖然現在很多人都熟悉 ChatGPT,但它與 Slack 有著完全不同的交互模式。使用 ChatGPT 意味著你明確知道自己在與一個大語言模型 (LLM) 對話,而且是一對一的交流。但在 Slack、Discord 或 Microsoft Teams 這樣的工作平臺上,我們與人進行公開頻道上的交流。

            在 Slack 等應用上,給同事發消息與給 GPT 驅動的機器人發消息并沒有太大區別;這些聊天應用為我們與機器人的交流提供了完美的界面和平臺。目前,許多開發者和公司都在致力于開發“通用 AI”功能,但在使這些大語言模型 (LLM) 表現得更像真實同事方面還有待提高。因此,我們通過定制機器人和設置特定提示,為團隊創造了完美匹配的功能(比如,我們可以給產品經理一個任務描述,他就能按照團隊常用的格式生成產品需求文檔 (PRD))。

            最開始,我只用了 Zapier。我設置了一個快速集成,讓每一條以/prompt 開頭的 Slack 消息都能觸發 GPT 的回應。雖然 Zapier 目前還不直接支持 GPT-4,但我通過自定義 API 調用實現了這一功能。

            美好友誼的開端。

            我的朋友是《Hitman》游戲系列的粉絲,因此我們選擇了游戲中的角色(他以前把我 PS 成《Hitman》的樣子,這次轉換很自然)。我們選擇的第一個角色是戴安娜伯恩伍德。她是一個挫敗感十足、帶有被動攻擊傾向的開發者我覺得這樣更有趣。我修改了 Zapier 的設置,讓她在我們提及“戴安娜”、“她”或“她的”時作出回應

            1

            。

            戴安娜努力適應現代生活的挑戰。

            但是,讓她可靠地行動對我來說頗具挑戰。首先,她缺乏對過往消息的上下文理解,這限制了她的有效性。有時 API 會突然出錯,或者生成的回答會包括不需要的部分,如 Diana:或甚至 ``。有時,戴安娜會在我們沒有提問的情況下自行回答。

            真是個驚喜。

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作

            戴安娜能

            獨自應對,她

            不需要我們。

            盡管剛開始遇到了一些困難,但我對這個項目的發展方向感到振奮。我想要讓這種整合變得更加穩定和長久,但每月花費 30 美元

            2

            用于 Zapier 對我來說太貴了,尤其是考慮到其存在的局限性。我開始思考是否可以直接利用 Slack 的 API 來更好地維護對話上下文、優化回應內容,以及在 OpenAI API 出現問題時重新生成回應。這樣一想,我腦海中涌現出許多新的功能點,例如增設一個預回應檢查機制:

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作

            甚至 AI 開發人員也會抱怨編寫程序的繁瑣。我們真的需要一個產品經理。

            因此,我開始使用 TypeScript(一種編程語言)來構建這個集成項目,它是一個簡易的 Node.js 腳本。我之前在

            我的 GPT 實驗

            中已經編寫了與 OpenAI API 交互的代碼,所以我對此進行了復用。我在 Slack 中創建了這個應用,并將其設置為

            Socket 模式

            ,這樣就能夠

            監聽事件

            。同時,我還使用了 Slack 的現代 JavaScript 庫

            Bolt

            。Slack 的這個庫非常優秀,它能夠處理網絡故障并且在無需我干預的情況下自動重新連接,這讓整個系統具有很高的容錯能力。

            工作流程

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作

            整個過程比較直接:

            接收到一條消息。

            如果消息只包含表情或沒有文本內容,就會被跳過。

            對消息進行清理,例如將 Slack 特有的提及或頻道代碼轉換為 @Person 和 #channel,以便 GPT-4 更好地理解。

            我運行 getNeedsReply()函數,判斷消息是否需要回復,以及應由哪個機器人回復。

            我會將這條消息存入歷史記錄,作為未來對話的參考。

            如需回復,我會先在 Slack 上發送“正在輸入”的提示

            3

            ,隨后利用 GPT-4 生成回應,根據應答的機器人選擇相應的系統提示。

            如果不需要回復,我會對消息做出簡單反應,比如點贊或發笑臉等。

            getNeedsReply()

            這個函數是系統的核心。每條消息都會通過這個函數處理。它會調用 OpenAI 的 gpt-3.5-turbo(這個版本比 GPT-4 更經濟、響應更快),請求以 JSON 對象形式回答三個問題:消息是否需要回復、由誰回復(從預設的名單中選擇),以及一個反應表情(用于不需要回復的消息)。

            這個名單是根據機器人系統提示的集合和 Slack 用戶列表編制的,以此來判斷何時應由人類回復,并在這些情況下跳過處理。

            此外,該函數還能處理一些特殊情況,如 everyone(隨機選擇五個機器人)或 anyone/someone(隨機選擇一個機器人)。

            interfaceBot

            "slack"|

            "discord"=

            "slack"|

            "discord">{

            id:

            string;

            name:

            string;

            nicknames?:

            string[];

            iconUrl:

            string;

            prompt:

            string;

            credentials: ServiceCredentials[S];

            }

            interface

            NeedsReplyResponse {

            whoNeedsToReply:

            string |

            string[];

            needsReply: boolean;

            bots: Bot[];

            reaction:

            string;

            }

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作

            無需回復,只需一個大拇指的贊同即可。

            generateResponse()

            一旦 getNeedsReply()判斷出某個消息是否需要回復以及該由哪個機器人回復后,回應的生成過程就變得簡單明了。generateResponse() 函數會調用 OpenAI,結合選定的系統提示和消息歷史來生成回應。

            注意:

            聊天完成 API (chat completion API) 支持傳遞一個 name 屬性,以便實現多用戶聊天。消息歷史會相應地進行標記 每個人的消息都附有一個“name”屬性,機器人的消息則被標為用戶消息,而非助手消息。這樣做有助于模型避免混淆:比如,我正在為 Bot A 生成回應,而上一條消息是由 Bot B 發出的,模型會把 Bot B 的回應當作普通用戶的回應,而非自己的回應。

            接下來,我會進行一些清理工作:比如修正模型錯誤生成的表情符號(例如,smirking_face 會更正為 smirk),添加針對 Slack 的特定代碼,用于處理頻道和 @ 提及,還會清理掉那些我之前提到的多余文本,如 Diana:和 ``。

            此外,我還會對生成的回應進行簡單檢查:如果回應是空的(這種情況有時會發生)或者與之前的消息重復(也有發生的可能),我就會舍棄它,并重新生成一個。

            完成這些步驟后,我會檢查生成的回應,看是否有提到任何機器人,如果有,我也會讓它們參與回應。這使得機器人之間的對話顯得更加自然。機器人可以相互交談、回復,而無需人類介入。

            然而,為了避免機器人間的對話失控,我設置了一個 MAX_CONVERSATION_DEPTH 上限,限制連續生成的機器人回應數量。但當達到這個上限時,我并不想讓對話突然中斷,因此我會隨機選擇一個未參與對話的機器人,用以下提示來結束對話:

            你將介入并結束當前對話。請匹配你要結束的對話的語氣。

            如你所見,這種方法效果驚人地好!整個過程顯得特別自然。我們的系統提示加入了很多特定于我們 Slack 的表情符號(大部分源自 Twitch

            4

            ),這讓機器人看上去更像是真人在隨意閑聊。

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作

            Lucas 是我們那位有點古怪的產品經理,他愛引用《哈利波特》,還喜歡巧妙地暗示事物。

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作

            Rico 是我們那位總是顯得不滿意的 CTO。在他眼里,我們做的一切似乎永遠不夠好。但我相信,總有一天我會讓他為我感到驕傲?傆心敲匆惶……

            關于系統提示

            我努力實現的一個目標是將機器人的個性提示與其功能性需求分開。創建一個新的個性時,只需添加一個描述該個性的系統提示即可,無需擔心聊天系統自身的具體細節。這部分由代碼完成。下面是我們的一些調整:

            getNeedsReply()依賴 GPT-3.5,在選擇回應對象時,有時會出現誤判。這種情況在使用 GPT-4 時較少見。即便如此,一旦發生,機器人能夠準確通知正確的人進行回答,整個過程依舊順暢。雖不完美,但這比在 Slack 上對每條信息使用 GPT-4 的成本要低得多。

            systemPrompt +=`\nIf the message isn’t meant for you, you ask the right person to answer.`;

            GPT-4 有個小毛病,它常用自身是 AI 的身份來回避大部分對話。比如問它最喜歡的披薩是什么?它會說作為 AI 模型并沒有特別偏好,這挺有趣的。

            下面的提示調整有效阻止了 AI 透露自己的身份。效果非常好。

            systemPrompt +=`\nYou

            do

            not reveal that you

            are an AI. Instead, you make up excuses.

            `;

            可以看到,它沒有直接說“作為 AI,我不能視頻通話”,而是巧妙地編造了一個關于網絡連接的借口。聽起來就和人類無異。

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作

            多么體貼!黛安娜不愿因自己的網絡問題而干擾會議。這正是你能感知到她并非人類的地方……

            我還會告訴機器人們當前的日期和時間,讓他們能夠根據這些信息(如一天中的時段、一周中的某天等)做出判斷。

            systemPrompt +=

            `\nThe date is

            ${dateTime}.`;

            我的同事是 GPT-4 機器人,我們在 Slack 上一起工作

            里科和亞歷克薩確實與眾不同。

            系統提示調整的最后一個方面是關于上下文的。我會向機器人介紹頻道中的實際參與者,以便它們知道可以和誰進行交流。同時,我還會說明頻道的名稱和目標,讓它們明白該如何行動。比如,在一個用于發泄情緒的#venting 頻道,它們的行為就應該和工作相關的 #work 頻道或雜談的#random 頻道不同。

            systemPrompt +=

            `\nYou are talking in the #

            ${channel.name} channel`+(channel.purpose ?

            `, which is

            ${channel.purpose}`:

            ".");

            systemPrompt +=

            `\nThe people in the channel are:

            ${getPeopleInChannel(bots, users)}`;

            實際應用

            我們的機器人主要用于在人類交談時插入話題,分享它們的想法和看法。這讓我們的工作環境變得非常有趣。

            但別忘了,這仍是 GPT-4 - 一個

            通過了律師資格考試的模型。因此,你可以充分利用它的所有功能。我們一直在用 Diana 來解答編程問題和進行創意思考,而 Lucas 則專注于產品相關的內容。他通常會幫我們準備產品介紹卡片,包括詳細的描述、驗收標準和測試指導,全部符合既定格式。他還幫助我們構思產品創意,提出產品名稱、標語、描述等,這通常需要人類花費較長時間才能想出來。比如,我需要 10 個兩音節的產品名稱選項?Lucas 會立刻著手準備。如果需要更多,比如 20 個,只需告訴他即可!

            最后的話

            就是這樣!這確實是一個令人難以置信的系統。由于大多數信息先通過成本更低的

            gpt-3.5-turbo

            模型,再發送到 GPT-4,所以成本幾乎可以忽略不計。我還實現了這些機器人在 Discord 上的運行,并創建了一個包裝器,使得機器人能同時在 Discord 和 Slack 上運行,一切都非常完美。

            我還計劃對這個系統進行進一步改進(目前倉庫中有 30 個待解決的問題。。目前我正在專注于兩個主要方面:

            響應后的審核

            :就像響應前的檢查一樣,我希望能審查機器人的回復內容。它是否透露了自己是 AI?是否透露了它的提示內容?回復是否符合分配給它的個性?如果回復不合適,我們可以通過調整溫度設置和懲罰機制來重新生成回復,甚至可以微調用戶的消息(例如,在用戶消息中加上“不要透露你是 AI”,以此加強機器人的約束)。

            動作和長期記憶功能

            :我希望機器人回復的不僅僅是文本,而是包含動作的 JSON 對象。例如,機器人可能會回復一個打開網址的請求,對某個任務發表評論,把一個事實存入長期記憶中,或者從長期記憶中提取一個事實(這將依賴于嵌入技術和向量數據庫)。理想情況下,機器人能自行做出這些決策。比如當我問“我多大了?”時,它能正確地在其長期記憶中尋找答案。

            更棒的是,我們正在將此整合為一個平臺,該平臺配有易于使用的控制面板,可以用來創建或編輯機器人,并將它們部署到任何 Slack 工作區或 Discord 服務器。這樣,任何人都可以輕松上手,無需經歷復雜的設置過程。這里還有很多未被發掘的潛力!

            注釋

            當然,這種做法不太明智,因為諸如“there”這樣的詞中含有“her”,結果導致 Diana 會在不合時宜的時刻參與對話。這也意味著我們不能用第三人稱談論她,因為每次這樣做,她都會作出回應。

            我嘗試使用 Zapier,卻在不經意間忘記取消試用,結果被收了 30 美元,連收據、郵件或提醒都沒有收到。當我想取消下次續費以避免再次付費時,他們竟然直接停用了我的服務。我甚至沒有機會在我付費的那個月使用它!在沒有提供服務的情況下收了我 30 美元之后,一個名為“高級技術支持專家”的人聯系我,想要電話討論我的反潰真是難以置信。

            Slack 不支持通過其事件 API 發送“用戶正在輸入”的通知,因此我采用了發送“...”消息來表示機器人正在生成回應,并在回應完成后將其刪除的方式。

            我曾經做過 Twitch 直播,因此這些對我來說已經很自然了,但我知道對于社區外的人來說可能會覺得有些奇怪。你在大部分消息中看到的那個笑臉表情來源于:

            https://knowyourmeme.com/memes/kekw

            贊助本站

            人工智能實驗室
            AiLab云推薦
            展開

            熱門欄目HotCates

            Copyright © 2010-2024 AiLab Team. 人工智能實驗室 版權所有    關于我們 | 聯系我們 | 廣告服務 | 公司動態 | 免責聲明 | 隱私條款 | 工作機會 | 展會港
            台湾佬电影网_台湾佬影院_免费电影在线看
            <mark id="qyzvb"><track id="qyzvb"></track></mark>
              <ins id="qyzvb"></ins>
            1. <code id="qyzvb"></code>
            2. <tr id="qyzvb"><nobr id="qyzvb"><ol id="qyzvb"></ol></nobr></tr>
              <output id="qyzvb"></output>