CrewAI Community Version(一)——初步了解以及QuickStart樣例

目錄

  • 1. CrewAI簡介
    • 1.1 CrewAI Crews
    • 1.2 CrewAI Flows
    • 1.3 Crews和Flows的使用情景
  • 2. CrewAI安裝
    • 2.1 安裝uv
    • 2.2 安裝CrewAI CLI
  • 3. 官網QuickStart樣例
    • 3.1 創建CrewAI Crews項目
    • 3.2 項目結構
    • 3.3 .env
    • 3.4 智能體角色及其任務
      • 3.4.1 agents.yaml
      • 3.4.2 tasks.yaml
    • 3.5 crew.py
    • 3.6 main.py
    • 3.7 本地運行
  • 參考

1. CrewAI簡介

??CrewAI是一個精簡、快如閃電的Python框架,完全獨立于LangChain或其他Agent框架。它為開發者提供了高層次簡潔性與精準低層次控制的雙重優勢,是創建適用于任何場景的自主AI代理的理想框架,存在如下的兩種模式:
??1. CrewAI Crews:優化自主性與協作智能,使您能夠創建具備特定角色、工具、目標的智能體團隊。
??2. CrewAI Flows:支持細粒度的事件驅動控制,通過單一LLM調用實現精準任務編排,并原生支持智能體團隊協作。

1.1 CrewAI Crews

??下圖源自CrewAI。
在這里插入圖片描述

組成描述作用
Crew最頂層的組織1. 管理智能體團隊
2. 監督工作流
3. 保證協作
4. 輸出結果
AI Agents專業的團隊成員1. 有特定的角色
2. 使用指定的工具
3. 可以委派任務
4. 自主決策
Process工作流管理系統1. 定義協作模式
2. 控制任務
3. 管理交互
4. 保證高效執行
Tasks個人任務1. 有明確的目標
2. 使用特定的工具
3. 輸入到更大的Process
4. 產生可行的結果

1.2 CrewAI Flows

??下圖源自CrewAI。
在這里插入圖片描述

組成描述作用
Flow結構化工作流安排1. 管理執行路徑
2. 處理state
3. 控制任務順序
4. 保證執行可靠
Events工作流行動的觸發器1. 啟動特定Processes
2. 啟用動態響應
3. 支持條件分支
4. 允許實時適應
States工作流執行上下文1. 維持執行數據
2. 啟用持久性
3. 支持可恢復性
4. 保證執行完整性
Crew Support增強工作流自動化1. 在需要時注入Crew
2. 補充結構化工作流
3. 平衡自動化與智能
4. 支持自適應決策

1.3 Crews和Flows的使用情景

情景推薦方法原因
開放性研究Crews任務需要創造性思考、探索和適應
生成內容Crews文章、報告和營銷材料需要聯合協作
決策工作流Flows決策路徑具備可預測性、審計性和精細控制
API編排Flows需要按照特定順序對多個外部服務進行可靠的集成
混合應用Crews、Flows使用Flows編排整個過程,同時使用Crews處理復雜子任務

??當你需要自主解決問題、合作創新或進行探索性任務時,應該選擇Crews;當你需要確定性的結果、審計能力或對執行的精準控制,應該選擇Flows;當你的應用需要結構化過程和一些自主智能時,應該聯合Crews和Flows。

2. CrewAI安裝

2.1 安裝uv

??uv是用Rust編寫的Python包管理器,目前使用Python的新項目基本上都使用它來對項目中的依賴進行管理。Windows上安裝的命令:
??powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

2.2 安裝CrewAI CLI

??安裝CrewAI CLI的命令:
??uv tool install crewai
??配置CrewAI的路徑:
??uv tool update-shell
??驗證CrewAI安裝:
??uv tool list
??更新CrewAI:
??uv tool install crewai --upgrade

3. 官網QuickStart樣例

3.1 創建CrewAI Crews項目

??創建CrewAI Crews項目:
??crewai create crew <your-project-name>

3.2 項目結構

??項目結構圖如下。
在這里插入圖片描述

路徑作用
<your-project-name>/.venv項目下的Python環境
<your-project-name>/knowledge本地知識庫目錄
<your-project-name>/src/<your-project-name>/config/agents.yaml定義智能體及其角色
<your-project-name>/src/<your-project-name>/config/tasks.yaml設置智能體任務和工作流
<your-project-name>/src/<your-project-name>/tools自定義智能體工具的目錄
<your-project-name>/src/crew.py協調、編排Crews
<your-project-name>/src/main.py項目入口、執行流
<your-project-name>/tests測試目錄
<your-project-name>/.env存放大模型API Keys和環境變量
<your-project-name>/.gitignore配置git忽略的文件或文件夾
<your-project-name>/pyproject.tomlPython項目配置
<your-project-name>/README.mdCrewAI官方給出的項目運行指導
<your-project-name>/uv.lockuv鎖定的Python依賴

3.3 .env

??CrewAI支持調用和OpenAI的API規范一致的大模型,這里我選擇了deepseek-chat。

MODEL=openai/deepseek-chat
OPENAI_API_KEY="your-api-key"
OPENAI_API_BASE="https://api.deepseek.com/v1"

3.4 智能體角色及其任務

3.4.1 agents.yaml

??樣例中定義了兩個智能體research和reporting_analyst,分別給它們定義了role、goal和backstory。此外,在role、goal和backstory中可以通過{變量名}的方式插入用戶輸入的內容。

researcher:role: >{topic}領域的高級數據研究員goal: >發掘{topic}領域的前沿發展backstory: >你是一位經驗豐富的研究員,擅長發掘{topic}領域的最新進展。你能夠找到最相關的信息并以清晰簡潔的方式呈現。reporting_analyst:role: >{topic}領域的報告分析師goal: >基于{topic}領域的數據分析和研究發現,創建詳細的報告backstory: >你是一位細致入微的分析師,對細節有著敏銳的洞察力。你能夠將復雜的數據轉化為清晰簡潔的報告,使他人能夠輕松理解并基于你提供的信息采取行動。

3.4.2 tasks.yaml

??tasks.yaml中給researcher和reporting_analyst分別分配了任務research_task和reporting_task,在每個任務中給出了任務描述description、任務輸出expected_output和該任務所屬的智能體agent。同樣,在description、expected_output中可以通過{變量名}的方式插入用戶的內容。

research_task:description: >對{topic}領域進行深入研究,確保在當前年份{current_year}下找到所有有趣且相關的信息。expected_output: >列出關于{topic}的10個要點,涵蓋最相關的信息。agent: researcherreporting_task:description: >審查獲取的內容,并將每個主題擴展為完整的報告章節。確保報告詳盡,包含所有相關信息。expected_output: >一份完整的報告,每個主要主題均包含詳細的信息章節,以Markdown格式呈現(不包含代碼塊標記)。agent: reporting_analyst

3.5 crew.py

?&emsp以下代碼皆是創建項目時自動生成的,從下面的代碼中可以看出FirstAgent類主要完成3個任務:1. 創建智能體Agent。2. 創建智能體的任務Task。3. 創建最頂層組織Crew。

from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task# If you want to run a snippet of code before or after the crew starts,
# you can use the @before_kickoff and @after_kickoff decorators
# https://docs.crewai.com/concepts/crews#example-crew-class-with-decorators@CrewBase
class FirstAgent():"""FirstAgent crew"""# Learn more about YAML configuration files here:# Agents: https://docs.crewai.com/concepts/agents#yaml-configuration-recommended# Tasks: https://docs.crewai.com/concepts/tasks#yaml-configuration-recommendedagents_config = 'config/agents.yaml'tasks_config = 'config/tasks.yaml'# If you would like to add tools to your agents, you can learn more about it here:# https://docs.crewai.com/concepts/agents#agent-tools@agentdef researcher(self) -> Agent:return Agent(config=self.agents_config['researcher'],verbose=True)@agentdef reporting_analyst(self) -> Agent:return Agent(config=self.agents_config['reporting_analyst'],verbose=True)# To learn more about structured task outputs,# task dependencies, and task callbacks, check out the documentation:# https://docs.crewai.com/concepts/tasks#overview-of-a-task@taskdef research_task(self) -> Task:return Task(config=self.tasks_config['research_task'],)@taskdef reporting_task(self) -> Task:return Task(config=self.tasks_config['reporting_task'],output_file='report.md')@crewdef crew(self) -> Crew:"""Creates the FirstAgent crew"""# To learn how to add knowledge sources to your crew, check out the documentation:# https://docs.crewai.com/concepts/knowledge#what-is-knowledgereturn Crew(agents=self.agents, # Automatically created by the @agent decoratortasks=self.tasks, # Automatically created by the @task decoratorprocess=Process.sequential,verbose=True,# process=Process.hierarchical, # In case you wanna use that instead https://docs.crewai.com/how-to/Hierarchical/)

3.6 main.py

??main.py文件主要功能是讓你在本地運行Crew,以達到測試的目的。以下代碼也是在創建項目時自動生成的。

import sys
import warningsfrom datetime import datetimefrom first_agent.crew import FirstAgentwarnings.filterwarnings("ignore", category=SyntaxWarning, module="pysbd")# This main file is intended to be a way for you to run your
# crew locally, so refrain from adding unnecessary logic into this file.
# Replace with inputs you want to test with, it will automatically
# interpolate any tasks and agents informationdef run():"""Run the crew."""inputs = {'topic': '大語言模型','current_year': str(datetime.now().year)}try:FirstAgent().crew().kickoff(inputs=inputs)except Exception as e:raise Exception(f"An error occurred while running the crew: {e}")def train():"""Train the crew for a given number of iterations."""inputs = {"topic": "大語言模型"}try:FirstAgent().crew().train(n_iterations=int(sys.argv[1]), filename=sys.argv[2], inputs=inputs)except Exception as e:raise Exception(f"An error occurred while training the crew: {e}")def replay():"""Replay the crew execution from a specific task."""try:FirstAgent().crew().replay(task_id=sys.argv[1])except Exception as e:raise Exception(f"An error occurred while replaying the crew: {e}")def test():"""Test the crew execution and returns the results."""inputs = {"topic": "大語言模型","current_year": str(datetime.now().year)}try:FirstAgent().crew().test(n_iterations=int(sys.argv[1]), openai_model_name=sys.argv[2], inputs=inputs)except Exception as e:raise Exception(f"An error occurred while testing the crew: {e}")

3.7 本地運行

??在項目路徑下先安裝依賴,然后運行:

crewai install
crewai run

??從上面的Agents.yaml和Tasks.yaml中可以看出,該樣例的目的是產出一份指定topic、指定年份year的報告,報告最終輸出為Markdown文件。
??生成該報告的過程如下:
??1. research Agent查找關于指定主題topic、指定年份year的內容,并將其總結成10個要點。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
??2. research Agent完成任務后,將得到10個要點交給reporting_analyst Agent。reporting_analyst審查獲取的10個要點,并將其擴寫成一份指定主題topic、指定年份year的報告,并以Markdown文件格式輸出。
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

參考

https://docs.crewai.com/introduction
https://docs.crewai.com/installation
https://docs.crewai.com/quickstart

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77664.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

word選中所有的表格——宏

Sub 選中所有表格()Dim aTable As TableApplication.ScreenUpdating FalseActiveDocument.DeleteAllEditableRanges wdEditorEveryoneFor Each aTable In ActiveDocument.TablesaTable.Range.Editors.Add wdEditorEveryoneNextActiveDocument.SelectAllEditableRanges wdEdito…

Tkinter與ttk模塊對比:構建現代 Python GUI 的進化之路

在 Python GUI 開發中&#xff0c;標準庫 tkinter 及其子模塊 ttk&#xff08;Themed Tkinter&#xff09;常被同時使用。本文通過功能對比和實際案例&#xff0c;簡單介紹這兩個模塊的核心差異。 1. 區別 Tkinter&#xff1a;Python 標準 GUI 工具包&#xff08;1994年集成&…

Linux系統之部署Dillinger個人文本編輯器

Linux系統之部署Dillinger個人文本編輯器 一、Dillinger介紹1.1 Dillinger簡介1.2 Dillinger特點1.3 使用場景二、本地環境介紹2.1 本地環境規劃2.2 本次實踐介紹三、檢查本地環境3.1 檢查本地操作系統版本3.2 檢查系統內核版本四、部署Node.js 環境4.1 下載Node.js安裝包4.2 解…

從malloc到free:動態內存管理全解析

1.為什么要有動態內存管理 我們已經掌握的內存開辟方法有&#xff1a; int main() {int val 20;//在棧空間上開辟四個字節char arr[20] { 0 };//在棧空間上開辟10個字節的連續空間return 0; }上述開辟的內存空間有兩個特點&#xff1a; 1.空間開辟的時候大小已經固定 2.數組…

健身房管理系統設計與實現(springboot+ssm+vue+mysql)含萬字詳細文檔

健身房管理系統設計與實現(springbootssmvuemysql)含萬字詳細文檔 健身房管理系統是一個全面的解決方案&#xff0c;旨在幫助健身房高效管理日常運營。系統主要功能模塊包括個人中心、會員管理、員工管理、會員卡管理、會員卡類型管理、教練信息管理、解聘管理、健身項目管理、…

seate TCC模式案例

場景描述 用戶下單時&#xff0c;需要創建訂單并從用戶賬戶中扣除相應的余額。如果訂單創建成功但余額劃扣失敗&#xff0c;則需要回滾訂單創建操作。使用 Seata 的 TCC 模式來保證分布式事務的一致性。 1. 項目結構 假設我們有兩個微服務&#xff1a; Order Service&#x…

【Linux】Rhcsa復習5

一、Linux文件系統權限 1、文件的一般權限 文件權限針對三類對象進行定義&#xff1a; owner 屬主&#xff0c;縮寫u group 屬組&#xff0c; 縮寫g other 其他&#xff0c;縮寫o 每個文件針對每類訪問者定義了三種主要權限&#xff1a; r&#xff1a;read 讀 w&…

《Operating System Concepts》閱讀筆記:p748-p748

《Operating System Concepts》學習第 64 天&#xff0c;p748-p748 總結&#xff0c;總計 1 頁。 一、技術總結 1.Transmission Control Protocol(TCP) 重點是要自己能畫出其過程&#xff0c;這里就不贅述了。 二、英語總結(生詞&#xff1a;3) transfer, transport, tran…

C語言之圖像文件的屬性

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 總有人間一兩風&#xff0c;填我十萬八千夢。 &#x1f680; 路漫漫其修遠兮&#xff0c;吾將上下而求索。 圖像文件屬性提取系統設計與實現 目錄 設計題目設計內容系統分析總體設計詳細設計程序實現…

opencv--基礎

opencv OpenCV是一個實現數字圖像處理和計算機視覺通用算法的開源跨平臺庫。 鏈接 opencv中的cv是什么意思 在OpenCV中&#xff0c;"cv" 是 "Computer Vision"&#xff08;計算機視覺&#xff09; 的縮寫。 opencv的實現語言 opencv的底層實現代碼是使…

Java創建對象的方式

1、通過new關鍵字創建新對象 用new關鍵字創建對象是我們在開發中最常用的方式&#xff0c;new關鍵字會為我們在堆內存中開辟一塊空間以存放對象的引用&#xff08;包含對象本身以及內部屬性的引用&#xff09;。 2、通過newInstance()方法創建新對象 newInstance()方法本質上是…

構建具備推理與反思能力的高級 Prompt:LLM 智能代理設計指南

在構建強大的 AI 系統&#xff0c;尤其是基于大語言模型&#xff08;LLM&#xff09;的智能代理&#xff08;Agent&#xff09;時&#xff0c;Prompt 設計的質量決定了系統的智能程度。傳統 Prompt 通常是簡單的問答或填空式指令&#xff0c;而高級任務需要更具結構性、策略性和…

豬行為視頻數據集

豬行為數據集包含 23 天(超過 6 周)的日間豬行為視頻,這些視頻由近乎架空的攝像機拍攝。視頻已配準顏色和深度信息。數據以每秒 6 幀的速度捕獲,并以 1800 幀(5 分鐘)為一批次進行存儲。大多數幀顯示 8 頭豬。 這里可以看到顏色和深度圖像的示例: 喂食器位于圖片底部中…

C++運算符重載詳解

C++ 中的運算符重載允許為用戶自定義類型(類或結構體)賦予運算符特定功能,使其操作更直觀。以下是運算符重載的關鍵點: 1. 基本語法 成員函數重載:運算符作為類的成員函數,左操作數為當前對象 (this),右操作數為參數。 class Complex {public:Complex operator+(const …

deep-share開源瀏覽器擴展,用于分享 DeepSeek 對話,使用戶能夠將對話內容保存為圖片或文本以便輕松分享

一、軟件介紹 文末提供程序和源碼下載學習 deep-share開源瀏覽器擴展&#xff0c;用于分享 DeepSeek 對話&#xff0c;使用戶能夠將對話內容保存為圖片或文本以便輕松分享。 二、軟件功能 One-click capture of DeepSeek chat content一鍵捕獲 DeepSeek 聊天內容Support sha…

Unity之如何實現RenderStreaming視頻推流

文章目錄 前言引入 UnityRenderStreaming 的好處教程步驟 1:設置環境步驟 2: 創建項目步驟 3:安裝軟件包步驟 5:下載示例步驟 6:檢查配置環境步驟 7:打開推流場景步驟 8: 準備用于流式傳輸的WebServer應用程序步驟 9: 運行 示例場景步驟 10:檢查視頻是否在瀏覽器中顯示…

30天開發操作系統 第26天 -- 為窗口移動提速

前言 昨天我們增加了可同時啟動的應用程序的數量&#xff0c;窗口也跟著變多了&#xff0c;整個畫面變得熱鬧起來。 話說&#xff0c;在對比color.hrb和color2.hrb的時候我們需要移動窗口&#xff0c;那個時候筆者感到窗口移動的速度很慢。在真機環境下的速度還算可以接受&…

9.QT-顯示類控件|Label|顯示不同格式的文本|顯示圖片|文本對齊|自動換行|縮進|邊距|設置伙伴(C++)

Label QLabel 可以?來顯??本和圖? 屬性說明textQLabel中的?本textFormat?本的格式.? Qt::PlainText 純?本? Qt::RichText 富?本(?持html標簽)? Qt::MarkdownText markdown格式? Qt::AutoText 根據?本內容?動決定?本格式pixmapQLabel 內部包含的圖?.scaledCo…

非參數檢驗題目集

非參數檢驗題目集 對醫學計量資料成組比較&#xff0c;相對參數檢驗來說&#xff0c;非參數秩和檢驗的優點是&#xff08; &#xff09; A. 適用范圍廣 B. 檢驗效能高 C. 檢驗結果更準確 D. 充分利用資料信息 E. 不易出現假陰性錯誤 對于計量資料的比較&#xff0c;在滿足參數…

libdxfrw庫使用總結

在 Win11VS2022CMake 平臺編譯 libdxfrw 庫的挑戰與應對 在當今數字化設計與開發領域&#xff0c;高效處理 CAD 文件格式如 DXF 是眾多項目的關鍵需求。libdxfrw 庫作為一種功能強大的工具&#xff0c;能助力開發者精準解析與寫入 DXF 文件&#xff0c;使其在眾多應用場景中備…