クイック例
セッションの作成と監視
セッションの作成と監視
コピー
AIに質問
import os
import requests
import time
DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")
# 新しいセッションを作成
response = requests.post(
"https://api.devin.ai/v1/sessions",
headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
json={
"prompt": "Review PR #249",
"idempotent": True
}
)
print("Response:\n"+ str(response.json()))
session_id = response.json()["session_id"]
# セッションのステータスを監視
while True:
status = requests.get(
f"https://api.devin.ai/v1/sessions/{session_id}",
headers={"Authorization": f"Bearer {DEVIN_API_KEY}"}
).json()
print("Status:\n" + str(status))
if status["status_enum"] in ["blocked", "stopped"]:
break
time.sleep(5)
ファイルのアップロードと処理
ファイルのアップロードと処理
コピー
AIに質問
import os
import requests
DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")
# ファイルをアップロード
with open("data.csv", "rb") as f:
response = requests.post(
"https://api.devin.ai/v1/attachments",
headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
files={"file": f}
)
file_url = response.text
# ファイルを処理するセッションを作成
response = requests.post(
"https://api.devin.ai/v1/sessions",
headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
json={
"prompt": f"Analyze the data in the attached file.\n\nATTACHMENT:\"{file_url}\""
}
)
print(str(response.json()))
インタラクティブなセッション
インタラクティブなセッション
コピー
AIに質問
import os
import requests
DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")
# アクティブなセッションにメッセージを送信
requests.post(
f"https://api.devin.ai/v1/sessions/{session_id}/message",
headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
json={
"message": "Make sure to write units tests when you are done."
}
)
GitHub リポジトリの分析
GitHub リポジトリの分析
ここでは、Devin API を使って GitHub リポジトリを分析する方法を示す、ひととおりのサンプルを紹介します。このサンプルでは次の点を示します:
- 認証とエラーハンドリング
- セッションの作成と監視
- 構造化出力の処理
- async/await を用いた適切なリソース管理
コピー
AIに質問
import os
import aiohttp
import asyncio
from typing import List, Dict
API_KEY = os.getenv("DEVIN_API_KEY")
API_BASE = "https://api.devin.ai/v1"
async def count_stars(session: aiohttp.ClientSession, repo_url: str) -> int:
"""Devin を使って GitHub リポジトリのスター数をカウントします。"""
# 新しい Devin セッションを作成
async with session.post(
f"{API_BASE}/sessions",
json={"prompt": f"Count stars for GitHub repository: {repo_url}"}
) as response:
session_data = await response.json()
session_id = session_data["session_id"]
print(f"Created session {session_id} for {repo_url}")
print(f"URL: {session_data['url']}")
# 指数バックオフで結果をポーリング
backoff = 1
print("Polling for results...")
while True:
async with session.get(
f"{API_BASE}/sessions/{session_id}"
) as response:
response_json = await response.json()
if response_json["status_enum"] in ["blocked", "stopped"]:
return response_json["structured_output"].get("star_count", 0)
await asyncio.sleep(min(backoff, 30))
backoff *= 2
async def main():
"""GitHub リポジトリを分析するメイン関数。"""
headers = {"Authorization": f"Bearer {API_KEY}"}
async with aiohttp.ClientSession(headers=headers) as session:
# 分析対象のリポジトリ例
repos = [
"https://github.com/openai/openai-python",
"https://github.com/anthropics/anthropic-sdk-python"
]
# 各リポジトリのスター数をカウント
for repo in repos:
stars = await count_stars(session, repo)
print(f"{repo}: {stars} stars")
if __name__ == "__main__":
asyncio.run(main())
高度な例
自動 QA テスト
Devin を使って Devin 自身の QA テストを実行している方法をご覧ください。Devin のブラウザ機能を使ってエンドツーエンドテストを自動化できます。
自動 PR レビュー
自動 PR レビューのために Devin を GitHub Actions と連携する方法を学べます。
サポート
お困りですか?
APIに関するご質問や問題の報告は、[email protected] までメールでご連絡ください。
