已比較的版本

索引鍵

  • 此行已新增。
  • 此行已移除。
  • 格式已變更。

1. Composio 介紹

Composio是一個專為AI代理和大語言模型(LLMs)設計的創新集成平台,提供超過150個外部工具和服務的連接支持,無框架和模型限制,旨在簡化AI代理和LLMs在各種應用程式中的構建、連接與部署。它通過工具庫和身份驗證管理,支持與如GitHub、Salesforce等外部服務的集成,並支援10個以上流行的代理框架及所有功能調用的LLM供應商。Composio還提供代碼解釋器、文件管理器、數據庫等系統工具,以幫助AI代理執行多樣化的任務。其優點包括減少開發時間和資源、提高可靠性以及強大的數據保護和企業級安全標準。此外,Composio具有可擴展性,便於企業在整個組織中擴展AI集成,並為開發者提供了無框架和模型限制的靈活性,使其能夠使用自己偏好的工具和模型。Composio 是一個專為 AI 代理和大語言模型(LLMs)設計的創新集成平台,提供超過150個外部工具和服務的連接支持,無框架和模型限制,旨在簡化 AI 代理和 LLMs 在各種應用程式中的構建、連接與部署。它通過工具庫和身份驗證管理,支持與如 GitHub、Salesforce 等外部服務的集成,並支援10個以上流行的代理框架及所有功能調用的 LLM 供應商。Composio 還提供代碼解釋器、文件管理器、數據庫等系統工具,以幫助 AI 代理執行多樣化的任務。其優點包括減少開發時間和資源、提高可靠性以及強大的數據保護和企業級安全標準。此外,Composio 具有可擴展性,便於企業在整個組織中擴展 AI 集成,並為開發者提供了無框架和模型限制的靈活性,使其能夠使用自己偏好的工具和模型。

...

2. 使用者操作步驟與流程

...

...

View file
nameapp.py
  1. 創建 Composio 帳號:進入 Composio 官網,使用 Gmail 進行綁定註冊。 ,進行註冊及登入。

    image-20240926-061156.png

    選擇欲綁定的APP:打開命令提示字元(cmd),輸入指令

  2. APP 驗證:打開命令提示字元(cmd) *若未執行此綁定步驟,後續達哥將無法協助執行 action

    1. 輸入 pip install composio_core composio_openai

    然後輸入
    1. 輸入 composio add [APP] -e entity

    ID 進行綁定。
    1. [ID] 進行綁定

      1. APP:請到 Composio All Tools 網頁查看

      2. ID:任意取一個代表該 APP 的某一個 Account,如:AIDE

  3. 取得 Composio API Key:在 Key:進入 Composio 平台的個人帳戶設置中找到並複製 API Key。進入 “https://app.composio.dev/settings” 即可看到 API Key。

    image-20240926-061331.pngImage Removed

  4. 取得 Davinci API Key:進入 Davinci 平台,找到 API Key 並複製。

  5. 打開web.zip 當中的 index.html文件。

  6. 執行 app.py

  7. 填入 Plugin Configuration:根據需要在配置區域填寫相關資訊。

    image-20240926-061418.pngImage Removed

  8. 勾選下方欲串接的 APP:選擇所需串接的APP進行勾選。

    image-20240926-061453.pngImage Removed

  9. 提交後:系統會生成一個 JSON檔,將該檔案上傳至達哥平台,成為 plugin。

3.開發文件

...

  1. Settings 的 API Keys 即可取得 API Key。

    composio_apikey.pngImage Added

  2. 下載

    View file
    nameweb.zip
    此 zip 檔,解壓縮過後利用瀏覽器開啟 index.html 。

  3. 填入 Plugin Configuration:根據各項目填寫相關資訊,使用此 Plugin Generator 即可馬上透過 No-Code 的方式產生 Plugin。

    image-20241021-080215.pngImage Added

  4. 選擇 APP:選取所需串接的 APP。

    image-20241021-080321.pngImage Added

  5. 獲取 Plugin:提交後,會自動生成一個 JSON 檔,將該檔案上傳至達哥平台。

  6. 執行

    View file
    nameapp.py
    後即可與達哥進行對話。

3. 開發文件

View file
nameapp.py
開發步驟

1. 環境準備

在進行開發前,請確保已安裝以下必要套件:

  • Flask: 作為Web框架,用於處理HTTP請求。作為 Web 框架,用於處理 HTTP 請求。

  • Flask-CORS: 允許跨來源資源共享(CORS)。

  • openai: 用於與OpenAI的API進行互動。用於與 OpenAI 的 API 進行互動。

  • composio_openai: Composio工具集套件。Composio 工具集套件。

安裝相關套件的指令:

程式碼區塊
languagepy
pip install Flask Flask-CORS openai composio_openai

2. 基本架構

建立一個Flask應用,並透過Flask-CORS來允許跨來源請求。應用程序會接收POST請求,其中包含用戶與API Key的資料,並根據用戶的需求使用Composio和Davinci API進行處理。建立一個Flask應用,並透過 Flask-CORS 來允許跨來源請求。應用程序會接收 POST 請求,其中包含用戶與API Key 的資料,並根據用戶的需求使用 Composio 和 Davinci API 進行處理。

程式碼區塊
languagepy
from flask import Flask, render_template, request
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

if __name__ == '__main__':
    app.run(debug=True, port=5001)

3.

...

初始化與綁定服務

3.1 初始化

...

Composio 工具集

通過 Composio API Key 和 Entity ID 來初始化 Composio 工具集。這使我們能夠連接指定的外部應用程序,如 Gmail、Youtube、GitHub 等 。

程式碼區塊
languagepy
from composio_openai import OpenAIComposioToolSet

openaicomposio_clienttoolset = OpenAI(
    base_url="<https://prod.dvcbot.net/api/assts/v1>",
    ComposioToolSet(api_key=DavinciComposio_API_KEY, entity_id=Entity_ID)
3.2

...

綁定應用

將需要綁定的應用(如Gmail、YouTube、GitHub 等)映射到工具集。

程式碼區塊
languagepy
fromdef run_composio_openai import ComposioToolSet(Composio_API_KEY, Entity_ID, App_list):
    # Initialize ComposioToolSet
    composio_toolset = ComposioToolSet(api_key=Composio_API_KEY, entity_id=Entity_ID)
3.3 綁定應用

將需要綁定的應用(如Gmail、YouTube等)映射到工具集,並使用Composio API獲取相應工具。

程式碼區塊
languagepy
from composio_openai import App
   
    # Check if the app is valid
    App_list_attr = []
    for app in App_list:
        # print(app)
        app_enum = getattr(App, app.upper(), None)
        if app_enum is None:
            raise ValueError(f'Invalid name')
        else:
            App_list_attr.append(app_enum)
    tool = composio_toolset.get_tools(apps=App_list_attr)
    # tool = composio_toolset.get_tools(apps=[App.GMAIL])

    # return app all action to DaVinci
    return tool[0]

4. 執行對話和工具調用

將達哥中的用戶訊息作為任務傳入OpenAI助手,並使用先前通過Composio綁定的工具集來進行操作。此程式片段會執行達哥回傳的 action (比如發送 E-mail, …)。

程式碼區塊
languagepy
assistant_instruction = "You are a super intelligent personal assistant, you can help me find what to do."
assistant = openai_client.beta.assistants.create(
    name="Personal Assistant",
    instructions=assistant_instruction,
    model="aide-gpt-4o",
    tools=tool,
    metadata={"backend_id": "default"}
)

# 創建對話執行線程
thread = openai_client.beta.threads.create()
message = openai_client.beta.threads.messages.create(thread_id=thread.id, role="user", content=my_task)

# 執行助手操作
run = openai_client.beta.threads.runs.create(thread_id=thread.id, assistant_id=assistant.id)

# 處理助手工具調用
response_after_tool_calls = composio_toolset.wait_and_handle_assistant_tool_calls(
    client=openai_client,
    run=run,
    thread=thread,
)

5. 檢查狀態並返回結果

根據助手操作的狀態來決定是否進行後續操作,並最終返回結果。

程式碼區塊
languagepy
while run.status in ["queued", "in_progress"]:
    run = openai_client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)

if run.status == "requires_action":
    print(run)
elif run.status == "failed":
    print(run)
else:
    messages = openai_client.beta.threads.messages.list(thread_id=thread.id).data
    return messages[0].content[0].text.value

6. API 路由設定

程式碼區塊
languagepy
def run_action(response, Composio_API_KEY, Entity_ID):
    # Initialize ComposioToolSet
    composio_toolset = ComposioToolSet(api_key=Composio_API_KEY, entity_id=Entity_ID)
    
    # convert string to python object
    if response['arguments'].find('true') != -1:
        res_pre = response['arguments'].replace('true', 'True')
        res = eval(res_pre)
    elif response['arguments'].find('false') != -1:
        res_pre = response['arguments'].replace('false', 'False')
        res = eval(res_pre)
    else:
        res = eval(response['arguments'])

    # get app action
    app_enum = getattr(Action, response['name'].upper(), None)
    print(app_enum)

    # execute app action
    result = composio_toolset.execute_action(action = app_enum, params = res, entity_id= Entity_ID)
    return result

6. API 路由設定

此程式片段設定 Composio Plugin 可以 request 到的 API。

程式碼區塊
languagepy
# get app action
@app.route('/', methods=['POST'])
def home():
    data = request.get_json()
    msgComposio_API_KEY = data['conversationComposio_API_KEY'][-1]['content
    Entity_ID = data['Entity_ID']
    App_list = data['App']
    Davinci response = run_composio(Composio_API_KEY, Entity_ID, App_list)
    response_data = {"response": response}
    
    return response_data

@app.route('/run', methods=['Davinci_API_KEY']'POST'])
def run_app():
    data = request.get_json()
    Composio_API_KEY = data['Composio_API_KEY']
    Entity_ID = data['Entity_ID']
    App_listresponse = data['response']['Appfunction_call']
    #  responseprint(data)
    res = run_composioaction(msgresponse, Davinci_API_KEY, Composio_API_KEY, Entity_ID, App_list)
    response_data = {"response": responseres}
    
    return response_data 

7. 執行應用

最後,啟動Flask應用來監聽POST請求,並根據用戶需求返回結果。最後,啟動 Flask 應用來監聽 POST 請求,並根據用戶需求返回結果。

程式碼區塊
languagebash
python app.py

4. 結論

透過達哥平台與Composio的串接,我們能夠有效地將生成式AI能力與多個外部應用進行整合,提供更加智能化和高效的解決方案。這種集成不僅讓AI代理能夠利用Composio的豐富工具庫與多種外部服務互動,也大大簡化了開發流程,提升了AI應用的擴展性與靈活性。透過達哥平台與 Composio 的串接,我們能夠有效地將生成式 AI 能力與多個外部應用進行整合,提供更加智能化和高效的解決方案。這種集成不僅讓 AI 代理能夠利用 Composio 的豐富工具庫與多種外部服務互動,也大大簡化了開發流程,提升了 AI 應用的擴展性與靈活性。

優勢

  1. 快速集成多個應用:Composio提供超過150個外部工具和服務的連接支持,無論是GitHub、Gmail等常見應用,還是企業內部系統,都能輕鬆進行綁定。:Composio 提供超過150個外部工具和服務的連接支持,無論是 GitHub、Gmail 等常見應用,還是企業內部系統,都能輕鬆進行綁定。

  2. 簡化開發流程:透過Composio的託管身份驗證系統與達哥的強大AI能力,開發者可以專注於核心業務邏輯,無需處理複雜的身份驗證及API管理。:透過 Composio 的託管身份驗證系統與達哥的強大 AI 能力,開發者可以專注於核心業務邏輯,無需處理複雜的身份驗證及API管理。

  3. 高效的工具調用:AI代理能夠根據用戶需求靈活調用所需工具,並在不同平台之間無縫執行任務,極大提升了操作的自動化和智能化程度。:AI 代理能夠根據用戶需求靈活調用所需工具,並在不同平台之間無縫執行任務,極大提升了操作的自動化和智能化程度。

  4. 靈活的應用擴展性:達哥與Composio的無框架和模型限制讓開發者可以自由選擇最合適的工具與框架,確保在不同情境下都能提供最佳性能。

  5. 提高業務效率:藉由AI代理自動化處理日常任務,企業能夠顯著降低手動操作的時間與成本,同時提升整體工作流程的效率。

...

  1. :達哥與 Composio 的無框架和模型限制讓開發者可以自由選擇最合適的工具與框架,確保在不同情境下都能提供最佳性能。

  2. 提高業務效率:藉由 AI 代理自動化處理日常任務,企業能夠顯著降低手動操作的時間與成本,同時提升整體工作流程的效率。