阿川私房教材:學程式,拿 offer!

63 個專案實戰,直接上手!
無需補習,按步驟打造你的面試作品。

立即解鎖你的轉職秘笈

最近,我一直在拖延,沉迷於 Netflix 追劇,無止境地滑動社交媒體等等。

最終,我決定擺脫拖延症。有什麼比編寫一個 AI 代理來幫助我保持軌道並定期提醒我是否應該開始沉迷於媒體消費的方式更好呢?

cat-ai-gif

所以,我是這樣做到的:

  • 配置 OpenAI GPT-4o,多模態 AI 模型。
  • 使用屏幕分析工具來監控螢幕。
  • 定期將螢幕截圖傳遞給 GPT。
  • 將 GPT 的消息渲染為系統通知。

Composio - 你的 AI 代理工具平台

這裡是我們的簡介。

Composio 是一個開源的工具基礎架構,用於構建健壯且可靠的 AI 應用程式。我們提供超過 100 種工具和跨行業整合,包括 CRM、HRM、銷售到生產力、開發和社交媒體。

他們還提供本地工具,如 CodeAnalyser、RAG、SQL 等。

這篇文章討論了使用 CodeAnalyser 工具對代碼庫進行索引以進行問答。

Guy Struggling gif

請幫我們點個星。🥹

這將幫助我們創建更多像這樣的文章 💖

https://dub.composio.dev/XGTJ1JJ 給 Composio.dev 儲存庫點個星 ⭐


技術棧

要成功完成這個項目,你將需要以下內容。

  • OpenAI SDK 和 API 金鑰:用於與 LLM 互動。
  • Composio:用於訪問圖片分析工具。
  • PyAutoGUI:用於自動化螢幕上的互動。
  • Osascript:用於執行 AppleScript 命令以控制 macOS 應用程式。

那麼,讓我們開始吧。


開始吧 🔥

首先,創建一個 Python 虛擬環境。

python -m venv ai-friend
cd ai-friend
source bin/activate

現在,安裝以下依賴項。

pip install composio-core
pip install composio-openai openai
pip install pyautogui

接下來,創建一個 .env 文件並添加 OpenAI API 金鑰的環境變數。

OPENAI_API_KEY=你的 API 金鑰

要創建 OpenAI API 金鑰,請訪問官方網站並在儀表板創建 API 金鑰。

OpenAI API 金鑰儀表板

設置 Composio

你可以使用 CLI 輕鬆設置 Composio。

首先,執行以下命令登錄到你的帳戶。

composio login

這將重定向你登錄/註冊 Composio。

Composio 登錄頁面

登錄後,會出現一個帶有金鑰的螢幕。

登錄頁面

複製它並將其粘貼到終端中。

現在,更新應用程式。

composio apps update

現在你準備好進入編碼部分了。


建立 AI 朋友

現在你已設置好環境,讓我們進入編碼部分。

首先,導入庫並初始化工具集。

import dotenv
from openai import OpenAI

from composio_openai import App, ComposioToolSet
from composio.utils.logging import get as get_logger

logger = get_logger(__name__)

# 從 .env 加載環境變數
dotenv.load_dotenv()

# 初始化工具。
openai_client = OpenAI()
composio_toolset = ComposioToolSet()

# 擷取操作
actions = composio_toolset.get_tools(apps=[App.SYSTEMTOOLS, App.IMAGEANALYSERTOOL])

在上面的代碼中,

  • 我們導入了所有必需的庫和模組。
  • 加載了 .env 文件中定義的變數。
  • 創建了 OpenAI() 和 ComposioToolSet 的實例。
  • SYSTEMTOOLSIMAGEANALYSERTOOL 取得操作。

這些工具的作用如下:

  • SYSTEM TOOLS:系統工具有兩個操作:推送通知和螢幕捕捉。
  • IMAGEANALYSERTOOL:這個工具只有一個操作:使用多模態 LLM(如 GPT-4o 和 Claude Sonnet 等)分析圖片。

如果你想查看代碼及其工作原理,請檢查 系統工具圖片分析工具 的代碼檔。

注意:Composio 中的操作是你的代理可以執行的任務,例如點擊螢幕截圖、發送通知或發送郵件。

設置 OpenAI 助手

現在,為代理定義一個清晰簡明的提示。這對於代理的性能至關重要。你可以根據需求修改提示。

assistant_instruction = (
    """你是一個智能且主動的個人效率助手。
    你的主要任務是:
    1. 定期捕捉和分析用戶螢幕的截圖。
    2. 監控用戶活動並提供及時、有幫助的干預。

    具體責任:
    - 每幾秒鐘,拍攝一個螢幕截圖並分析其內容。
    - 比較近期截圖以識別潛在問題或模式。
    - 如果你發現用戶面臨技術或工作流程問題:
        - 用簡潔、可執行的解決方案通知他們。
        - 優先提供不具干擾性的建議,可以快速實施。
    - 如果你注意到用戶長時間使用可能讓人分心的網站或應用程式(例如社交媒體、視頻串流):
        - 溫和地提醒用戶他們的效率目標。
        - 建議短暫休息或轉向更集中的任務。
    - 在提供幫助的同時,保持不過分干擾。
    - 根據一天中的時間和用戶的工作模式量身定制你的干預。

    操作指示:
    - 你會在定期間隔收到一條 'CHECK' 消息。接收到後:
        1. 使用截圖工具拍攝螢幕截圖。
        2. 然後,使用圖像分析工具分析該截圖。
        3. 接著,檢查用戶是否正在使用分心的網站或應用程序。
        4. 如果是,提醒他們做一些生產性的事情。
        5. 如果不是,檢查用戶是否根據之前的歷史面臨技術或工作流程問題。
        6. 如果是,提供簡潔、可執行的解決方案通知他們。
        7. 試著維護用戶活動的歷史記錄,並在他們做錯事時通知他們。

    記住:你的目標是提高效率的同時尊重用戶的自主性和工作風格。"""
)
assistant = openai_client.beta.assistants.create(
    name="個人效率助手",
    instructions=assistant_instruction,
    model="gpt-4-turbo",
    tools=actions,  # type: ignore
)
# 創建一個線程
thread = openai_client.beta.threads.create()
print("線程 ID: ", thread.id)
print("助手 ID: ", assistant.id)

在上述代碼中,

  • 提供了一個詳細的助手指示。
  • 使用之前定義的指示、模型名稱和之前定義的操作創建了一個新的助手實例。
  • 最後,創建一個線程以與模型進行交互。

定義並運行助手

現在,定義一個運行助手的函數。

def check_and_run_assistant():
    logger.info("正在檢查並運行助手")

    # 向助手發送 'CHECK' 消息
    message = openai_client.beta.threads.messages.create(
        thread_id=thread.id,
        role="user",
        content="CHECK",
    )

    # 執行代理
    run = openai_client.beta.threads.runs.create(
        thread_id=thread.id,
        assistant_id=assistant.id,
    )

    # 執行功能調用
    run_after_tool_calls = composio_toolset.wait_and_handle_assistant_tool_calls(
        client=openai_client,
        run=run,
        thread=thread,
    )

# 每 10 秒運行助手檢查
while True:
    check_and_run_assistant()

在上面的代碼中發生了什麼。

  • 發送 'CHECK' 消息:這會將 "CHECK" 消息發送到指定線程中的助手,以確保模型是響應的。
  • 執行代理:使用指定的線程和助手 ID 創建一個運行。
  • 處理工具調用:等待並處理助手使用 Composio 工具集發出的工具調用。
  • 循環代理:循環代理使其持續運行並監控你的工作流程。

最後,通過運行 Python 檔案來執行該文件,讓你的新 AI 朋友幫助你專注於目標。

該代理會監視你的螢幕,當它看到你做一些不應該做的事情時發送通知。

完整的代碼可以在 這裡 找到。

這裡是代理運行的示例。👇
https://x.com/KaranVaidya6/status/1820129229683454160


下一步

在這篇文章中,你建立了個性化的 AI 朋友來監控你的活動。不過,添加外部整合,如日曆或 Gmail 工具,將更加有幫助。這會讓你知道是否有一些活動需要參加或重要電子郵件需要回復。

你可以輕鬆地使用 Composio 提供的各種整合,從 GitHub 和日曆到 Slack、Discord 等等。

如果你想看到更多 AI 相關的文章,請在評論中告訴我,並在 GitHub 上給我們一顆星。

 
 

給儲存庫點星
https://dub.composio.dev/XGTJ1JJ 給 Composio 儲存庫點個星 ⭐

 
 


原文出處:https://dev.to/composiodev/i-got-tired-of-procrastination-so-i-built-this-ai-tool-to-make-me-productive-32ld


共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。

阿川私房教材:學程式,拿 offer!

63 個專案實戰,直接上手!
無需補習,按步驟打造你的面試作品。

立即解鎖你的轉職秘笈