本教程為您示範如何使用Agent Identity的能力,讓您的Agent調用DingTalk開放平台並將資料安全地寫入DingTalk文檔。
架構

準備工作
環境要求
本地測試環境需要安裝Python(版本≥ 3.10)以及pip包管理器。
使用者及許可權要求
-
使用者要求:
-
DingTalk開放平台管理員:用於管理DingTalk開放平台的應用
-
指令碼執行使用者(RAM使用者):用於執行準備指令碼及本地應用測試。
-
-
RAM許可權要求:
指令碼執行使用者需要具備以下許可權:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "agentidentity:*", "Resource": "*" }, { "Effect": "Allow", "Action": "agentidentitydata:*", "Resource": "*" }, { "Effect": "Allow", "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "ram:ServiceName": ["agentidentity.aliyuncs.com"] } } }, { "Effect": "Allow", "Action": [ "ram:CreateApplication", "ram:CreateRole", "ram:CreatePolicy", "ram:AttachPolicyToRole", "ram:CreateAppSecret", "ram:DeleteApplication" ], "Resource": "*" } ] }
百鍊API密鑰
擷取具有百鍊模型調用許可權的DashScope API密鑰。如您還沒有建立百鍊API密鑰,請參考擷取API Key進行建立和配置。
步驟一:建立並配置DingTalk應用
建立DingTalk應用
按照DingTalkOAuth憑證供應商設定教程建立DingTalk應用,並將DingTalk配置為Agent Identity的OAuth2憑證供應商。
配置DingTalk應用許可權
-
登入DingTalk開發人員後台。找到建立的DingTalk應用,進入應用詳情頁。
-
在應用詳情頁的左側導覽列,單擊許可權管理。在許可權搜尋方塊中輸入
Document.Document.Write,單擊返回結果操作列的立即開通。該許可權授予DingTalk應用以委託方式覆寫使用者本人的DingTalk文檔。
步驟二:本地安裝與測試應用
擷取並準備範例程式碼
-
複製代碼倉庫。在本地開啟終端,執行以下命令複製範例程式碼。
git clone https://github.com/aliyun/agent-identity-dev-kit.git cd agent-identity-dev-kit/agent_identity_python_samples/end-to-end_sample -
安裝依賴。建議建立並啟用一個 Python 虛擬環境,然後安裝專案所需的依賴。
pip install -r requirements.txt -
配置環境變數。
export AGENT_IDENTITY_REGION_ID=cn-beijing # 當前Agent Identity僅開放北京地區 export DASHSCOPE_API_KEY=<your-api-key> # DashScope API
準備RAM使用者憑證
在本地使用使用者及許可權要求提到的指令碼執行使用者配置憑證。
使用阿里雲CLI
-
安裝阿里雲CLI(如已安裝,可跳過)。具體請參考快速使用 CLI。
-
登入阿里雲CLI。具體請參考為阿里雲CLI配置OAuth認證。
-
檢查憑證配置。執行命令
aliyun configure list檢查憑證配置是否存在且有效。輸出類似如下:Profile | Credential | Valid | Region | Language --------- | ------------------ | ------- | ---------------- | -------- OAuthProfile * | OAuth:xQcliVOdYA@CN | Valid | cn-hangzhou | zh
使用Access Key(不推薦)
為指令碼執行使用者建立存取金鑰(Access Key)並配置到本地環境變數中。
export ALIBABA_CLOUD_ACCESS_KEY_ID=<your-access-key-id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your-access-key-secret>
執行準備指令碼
在本地專案根目錄下運行準備指令碼prepare.py來自動建立所需的雲資源:
python -m prepare
此指令碼執行以下操作:
-
建立身份提供者
-
建立阿里雲OAuth 2.1入站應用
-
建立阿里雲MCP服務所需的OAuth 2.1 Native應用(在本教程中不會使用)
-
建立工作負載身份和角色
-
配置憑證提供者
指令碼會輸出建立的資源資訊到根目錄下的.config.json檔案中。
如果執行過程中出現異常失敗(如網路問題、資源超過quota等)需要清除建立的資源後再重新運行準備指令碼,清除建立的資源請運行:
python -m clear
為避免對帳號下的RAM資源造成影響,清理邏輯不會刪除角色/自訂策略,需要手動刪除。
在代碼中配置DingTalk憑證供應商
-
在Agent Identity憑證供應商頁面,找到您在步驟一中建立的DingTalk憑證供應商,複製憑證供應商名稱。
-
在專案下的
deploy_starter/tools/ding_talk_tool.py檔案中,找到以下代碼:@requires_access_token( credential_provider_name="test-provider-for-dingtalk", scopes=["openid", "corpid"], auth_flow="USER_FEDERATION", on_auth_url= on_auth, # force_authentication=True, callback_url= f"{get_config_with_default('APP_REDIRECT_URI', 'http://localhost:8090')}/callback", inject_param_name="access_token", )將其替換為如下內容,其中
credential_provider_name的值需要更新為您實際的DingTalk憑證供應商名稱:@requires_access_token( credential_provider_name="your-dingtalk-credential-provider-name", scopes=["openid", "corpid"], auth_flow="USER_FEDERATION", on_auth_url= on_auth, # force_authentication=True, callback_url= f"{get_config_with_default('APP_REDIRECT_URI', 'http://localhost:8090')}/callback", inject_param_name="access_token", custom_parameters={"prompt": "consent"}, )
步驟三:測試與驗證
-
啟動Agent代理服務。在根目錄下執行以下命令:
python -m deploy_starter.main -
啟動前後端應用。在根目錄下執行以下命令:
python -m application.backend.app -
訪問應用並與代理互動:
-
等待代理及前後端應用啟動完畢後,在瀏覽器中輸入應用訪問地址
http://localhost:8090。 -
完成阿里雲登入及使用者授權。之後,您可在應用交談視窗中與模型進行對話,例如輸入:“將以下內容寫入我的DingTalk文檔:{DingTalk文檔連結} {需要寫入的內容}”。
發送指令後,Agent 回複將使用DingTalk工具完成操作,並顯示授權提示:"請點選連結授權使用 寫入DingTalk文檔",附帶 OAuth2 授權連結(
agentidentitydata.cn-beijing.aliyuncs.com/oauth2/authorize?request_uri=urn:ietf:params:oauth:request_uri:xxx),使用者需點擊該連結完成DingTalk文檔寫入授權。說明您需要提前擷取DingTalk文檔的連結,本樣本應用無法建立DingTalk文檔並寫入。
-
單擊返回結果中的OAuth授權地址並使用DingTalk文檔持有人賬戶完成登入和授權。
-
完成授權後,如果一切正常,Agent將提示文檔已經寫入成功。
-
此時檢查DingTalk文檔,會發現文檔已成功寫入內容。
-
您也可以將DingTalk寫入功能與其他MCP服務結合使用。例如,可以結合教程在百鍊高代碼中使用Agent Identity,將從阿里雲MCP擷取的資料寫入DingTalk文檔。
注意事項
-
如您希望再次執行準備指令碼prepare.py,請先在專案根目錄下執行清理指令碼以清理資源:
python -m clear -
專案準備指令碼
prepare.py下的常量配置資訊不可更改,否則會導致應用無法正常工作。 -
如果您希望將前後端應用部署至阿里雲(如ECS樣本),需要為後端應用所在的環境關聯執行個體RAM角色(如ECS執行個體角色、Function Compute執行個體角色),並授予
AliyunAgentIdentityDataCompleteAuthAccess系統策略。否則Agent將無法獲得OAuth Access Token。