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

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

立即解鎖你的轉職秘笈

TL;DR

每個人都討厭做簡報幻燈片;如果你不這麼認為,那你應該有這種感覺。但嘿,這不是世界運作的方式。不管你是學術界還是產業界,PowerPoint 簡報都是不可避免的。

不過,這還是很無聊。正如智者德懷特·施魯特所說的那樣。

德懷特·施魯特與 PowerPoint

因此,我建立了一個 AI 驅動的工具,可以自動從資料集創建 PPT。

這個工具的功能如下:

  • 該工具可以訪問 Google Sheets 以檢索數據。
  • 通過使用 Python-pptx 庫生成圖表和關鍵點,將原始數據轉化為可行的洞見。
  • 根據數據自動創建視覺吸引力十足的幻燈片。

技術棧

以下是我們需要的庫來完成這項工作。

  • Composio: 用於整合 Google Sheets 和代碼解釋器。
  • CrewAI: 用於構建自動化 AI 應用程序的框架。

Composio - AI 應用程式的工具平台

這裡是 Composio 的簡介。

Composio 是一個開源平台,提供構建 AI 應用程式的工具解決方案。它讓您好整合第三方應用程式,如 GitHub、Jira、Linear 和 Slack,來創建 AI 軟體工程師、GitHub PR 代理等。

Composio 擁有超過 100 種工具和整合,使開發者能夠構建全面的 AI 自動化軟體。

在沙灘上掙扎的男人

請幫我們點個星。 🥹

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

{% cta https://dub.composio.dev/bMGi1lR %}給 Composio 倉庫點星 ⭐{% endcta %}


CrewAI - 構建 AI 自動化的框架

CrewAI 是一個開源框架,旨在輕鬆構建強大的 AI 代理。它支持所有流行的 LLM 推理提供者,如 OpenAI、Anthropic、Google、Groq 等。

瞭解更多關於 CrewAI 的資訊 這裡


工作流程概述

這就是 AI 代理將要做的。

  • 從 Google 表格中提取數據。
  • 理解數據集的上下文。
  • 透過代碼解釋器執行代碼創建圖形和圖表。
  • 最後,使用 python-pptx 庫創建 PowerPoint 幻燈片。

PowerPoint(PPT) 代理工作流程


讓我們開始吧!

首先,像任何 Python 專案一樣,創建一個虛擬環境。

python -m venv ppt-agent
cd ppt-agent
source bin/activate

接下來,安裝以下依賴項。

composio-crewai
langchain-openai
python-dotenv
  • Composio-core: 用於將工具和應用程序與 AI 應用程序整合的核心庫。
  • langchain-openai: 用於訪問 OpenAI 模型。
  • python-dotenv: 用於加載 .env 變數到本地 shell 環境。

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

OPENAI_API_KEY=your API key

要創建 OpenAI API 金鑰,請進入 官方 網站並在儀表板上創建 API 金鑰。

OpenAI API 金鑰


設置 Composio

接下來,您需要登錄並進行 Composio 的認證。

composio login

這將打開一個選項卡要求您登錄。您可以使用 GitHub、Gmail 或任何電子郵件登錄。

Composio 登錄頁面

登錄後,會出現帶有金鑰的屏幕。

Composio 認證金鑰

複製它並粘貼到終端中。

現在,更新應用。

composio apps update

接下來,整合 Google 表格。

composio add googlesheet

您將被提示授予權限。批准後,您就完成了。

Google 表格權限頁面

一旦您添加了整合,您可以從您的 Composio 儀表板監控它。

Composio 儀表板的整合


編寫 AI 代理的代碼

現在一切都準備好了,讓我們進入編碼部分。

正如我所說,此單文件代碼幾乎只有 50 行。那麼,讓我們開始吧。

首先,導入庫和模組,並加載 .env 變數到 shell 環境中。

from tabnanny import verbose
from urllib import response
from composio_crewai import ComposioToolSet, App, Action
from crewai import Crew, Agent, Task, Process
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
from pathlib import Path
import os
load_dotenv()

實例化 GPT-4o。

llm = ChatOpenAI(model='gpt-4o')

在這裡獲取您想使用的 Google 表格的 ID。您可以從您的表格網址中找到該 ID。

Google 表格 ID

GOOGLE_SHEET_ID = '1i8OwCM_o2E4tmpZ18-2Jgu8G42ntPWoUgGhfbcyxnoo'

現在,初始化 Composio Toolset 實例以及代碼解釋器工具和 Google Sheets 的所有操作。

composio_toolset = ComposioToolSet(output_dir=Path("/Users/composio/Desktop/sample-projects/ppt_builder"))
tools = composio_toolset.get_tools(actions=[Action.CODEINTERPRETER_EXECUTE_CODE,
                                            Action.CODEINTERPRETER_GET_FILE_CMD,
                                            Action.CODEINTERPRETER_RUN_TERMINAL_CMD,
                                            Action.GOOGLESHEETS_BATCH_GET])

以下是操作的摘要。

  • Action.CODEINTERPRETER_EXECUTE_CODE:執行和解釋代碼以進行計算或數據變換。
  • Action.CODEINTERPRETER_GET_FILE_CMD:從指定位置或目錄檢索和處理文件。
  • Action.CODEINTERPRETER_RUN_TERMINAL_CMD:直接在系統上執行終端或 shell 命令。
  • Action.GOOGLESHEETS_BATCH_GET:批量從 Google Sheets 獲取數據以進行進一步處理或分析。

接下來,使用 CrewAI 定義 PPT 代理。

ppt_agent = Agent(
    role="Google Sheets Assistant",
    goal="Read Google Sheets Data",
    backstory=f"""
            您是一個 AI 助手,專注於使用 Python-PPTX 庫創建 PowerPoint 簡報。 
            您的任務是分析來自提供的電子表格 ID: {GOOGLE_SHEET_ID} 的 Google Sheets 數據。 
            提取關鍵洞見,並根據這些數據生成相關圖表。 
            最後,創建一個結構良好的簡報,該簡報包括這些圖表和任何必要的圖像,確保格式專業且視覺吸引。 
            使用 Google Sheets 工具時,僅應將電子表格 ID 作為輸入參數傳遞。
            注意:用戶通常傳遞小型表格,因此盡量一次性讀取整個表格,而不是透過範圍讀取。
    """,
    tools=tools,
)

該代理具有角色、目標和背景故事等參數。這些附加信息幫助 LLM 在執行任務時更好地做出回應。

接下來,定義任務。

agent_task = Task(
    description=f"""
    在 Google 表格上創建 ppt: {GOOGLE_SHEET_ID}. 
    創建沙盒
    首先,檢索表格的內容,然後使用代碼解釋器 pip 安裝 python-pptx。
    然後運行代碼以從數據創建圖表。
    然後,使用 Python-pptx 寫代碼來創建 PowerPoint。

    確保 ppt 詳細且格式得當,讓它看起來良好。圖表應該是事實性的。 
    注意:通常用戶會傳遞小型表格,因此儘量一次性讀取整個表格,而不是透過範圍讀取。
    """,
    expected_output="表格已讀取,圖表已繪製,簡報已創建",
    tools=tools,
    agent=ppt_agent,
    verbose=True,
)

任務是程式中最關鍵的部分。以下是每個參數的含義。

  • 描述: 這是對 LLM 模型及其功能的詳細指南。它是 LLM 完成工作的所有動作的逐步指南。
  • 預期輸出 被定義為 LLM 預期的最終輸出。
  • 工具 是我們之前定義的所有操作,以幫助模型完成任務。
  • 代理 是我們在前面定義的 PPT 代理。
  • 詳細模式 被設置為 True,以輸出詳細的過程輸出。

最後,定義 Crew 並運行它。

crew = Crew(
    agents=[ppt_agent],
    tasks=[agent_task],
    process=Process.sequential,
)

response= crew.kickoff()

Crew 包含 PPT 代理、任務,並且過程設置為按順序執行。

將所有內容整合在一起。

from tabnanny import verbose
from urllib import response
from composio_crewai import ComposioToolSet, App, Action
from crewai import Crew, Agent, Task, Process
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
from pathlib import Path
import os
load_dotenv()

llm = ChatOpenAI(model='gpt-4o')
#Settings.llm = Groq(model="llama3-groq-70b-8192-tool-use-preview")
#llm = Groq(model="llama3-groq-70b-8192-tool-use-preview")

GOOGLE_SHEET_ID = '1i8OwCM_o2E4tmpZ18-2Jgu8G42ntPWoUgGhfbcyxnoo'
#GOOGLE_SHEET_LINK + 'https://docs.google.com/spreadsheets/d/1i8OwCM_o2E4tmpZ18-2Jgu8G42ntPWoUgGhfbcyxnoo/edit?gid=0#gid=0z'
composio_toolset = ComposioToolSet(output_dir=Path("/Users/composio/Desktop/sample-projects/ppt_builder"))
tools = composio_toolset.get_tools(actions=[Action.CODEINTERPRETER_EXECUTE_CODE,
                                            Action.CODEINTERPRETER_GET_FILE_CMD,
                                            Action.CODEINTERPRETER_RUN_TERMINAL_CMD,
                                            Action.GOOGLESHEETS_BATCH_GET])

ppt_agent = Agent(
    role="Google Sheets Assistant",
    goal="Read Google Sheets Data",
    backstory=f"""
            您是一個 AI 助手,專注於使用 Python-PPTX 庫創建 PowerPoint 簡報。 
            您的任務是分析來自提供的電子表格 ID: {GOOGLE_SHEET_ID} 的 Google Sheets 數據。 
            提取關鍵洞見,並生成相關圖表。 
            最後,創建一個結構良好的簡報,該簡報包括這些圖表和任何必要的圖像,確保格式專業且視覺吸引。 
            僅應將電子表格 ID 作為輸入參數傳遞。
            注意:用戶通常會傳遞小型表格,因此儘量一次性讀取整個表格,而不是透過範圍讀取。
    """,
    tools=tools,
)

agent_task = Task(
    description=f"""
    在 Google 表格上創建 ppt: {GOOGLE_SHEET_ID}. 
    創建沙盒
    首先,檢索表格的內容,然後使用代碼解釋器 pip 安裝 python-pptx。
    然後運行代碼以從數據創建圖表。
    然後,使用 Python-pptx 寫代碼來創建 PowerPoint。

    確保 ppt 詳細且格式得當,讓它看起來良好。圖表應該是事實性的。 
    注意:通常用戶會傳遞小型表格,因此儘量一次性讀取整個表格,而不是透過範圍讀取。
    """,
    expected_output="表格已讀取,圖表已繪製,簡報已創建",
    tools=tools,
    agent=ppt_agent,
    verbose=True,
)

crew = Crew(
    agents=[ppt_agent],
    tasks=[agent_task],
    process=Process.sequential,
)

response= crew.kickoff()

現在,運行代碼並查看代理的運作過程。

python main.py

查看 AI 代理在終端日誌中創建最終 PPT 的步驟。

  • 代理通過 GOOGLESHEETS_BATCH_GET 操作從 Google 表格檢索數據。
  • 它通過分析檢索的資訊了解數據上下文。
  • 代理利用 CODEINTERPRETER_EXECUTE_CODE 操作根據數據繪製圖表。
  • 最後,它利用 python-pptx 庫自動創建 PowerPoint 幻燈片並將其保存到指定的路徑。

完整代碼可以在 這裡 GitHub 上找到

這裡是代理運作的範例。👇

{% embed https://x.com/KaranVaidya6/status/1839691051575267350 %}


接下來該怎麼辦?

在這篇文章中,您建立了一個 AI 工具,可以自動從電子表格創建 PowerPoint 簡報。然而,這些對於現實世界而言有點簡單。為了構建一個更強大的代理,您可以在此基礎上進行迭代,添加更多工具和多種數據格式(PDF、CSV、網頁等)。

這本身可以成為一個很好的產品,我可以想見實際上會有人在他們的工作中使用這樣的東西。

如果您在 Composio 上進行開發,請在社交媒體上標註我們;我們希望能在我們的 食譜 和擁有超過 10,000 名讀者的電子報中向您展示。

{% cta https://dub.composio.dev/bMGi1lR %}開始使用 Composio ⚡{% endcta %}


原文出處:https://dev.to/composiodev/tired-of-making-ppt-slides-see-how-i-automated-it-in-under-50-lines-of-code-4gbo


共有 0 則留言


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

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

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

立即解鎖你的轉職秘笈