Zum Hauptinhalt springen
Diese Seite enthält Codebeispiele für häufige Anwendungsfälle der v1 API.

Schnelle Beispiele

import os
import requests
import time

DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")

# Create a new session
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"]

# Monitor session status
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)
import os
import requests

DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")

# Upload a file
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

# Create a session to process the file
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()))
import os
import requests

DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")

# Send a message to an active session
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."
    }
)
Session-Secrets ermöglichen es Ihnen, temporäre Zugangsdaten oder API keys bereitzustellen, die nur während einer einzelnen Sitzung verfügbar sind und nicht in den Secrets Ihrer Organisation gespeichert werden.
import os
import requests

DEVIN_API_KEY = os.getenv("DEVIN_API_KEY")

# Erstelle eine Sitzung mit sitzungsspezifischen Secrets
response = requests.post(
    "https://api.devin.ai/v1/sessions",
    headers={"Authorization": f"Bearer {DEVIN_API_KEY}"},
    json={
        "prompt": "Deploy the application to the staging environment",
        "session_secrets": [
            {
                "key": "DEPLOY_API_KEY",
                "value": "your-temporary-deploy-key",
                "sensitive": True
            },
            {
                "key": "STAGING_URL",
                "value": "https://staging.example.com",
                "sensitive": False
            }
        ]
    }
)

print(response.json())
Hinweise:
  • Secret-Keys müssen den Namenskonventionen für Umgebungsvariablen entsprechen (beginnen mit einem Buchstaben oder Unterstrich, gefolgt von Buchstaben, Zahlen oder Unterstrichen)
  • Das Feld sensitive ist standardmäßig true, wenn es nicht angegeben wird
  • Sitzungs-Secrets sind nur in der Sitzung verfügbar, in der sie erstellt werden, und werden nicht in Organisations-Secrets gespeichert
Hier ist ein vollständiges Beispiel, das zeigt, wie die Devin API verwendet werden kann, um GitHub-Repositories zu analysieren. Dieses Beispiel demonstriert:
  • Authentifizierung und Fehlerbehandlung
  • Erstellen und Überwachen von Sitzungen
  • Verarbeitung strukturierter Ausgaben
  • Korrektes Ressourcenmanagement mit async/await
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:
    """Count stars for a GitHub repository using Devin."""
    # Create a new Devin session
    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']}")

    # Poll for results with exponential backoff
    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():
    """Main function to analyze GitHub repositories."""
    headers = {"Authorization": f"Bearer {API_KEY}"}
    async with aiohttp.ClientSession(headers=headers) as session:
        # Example repositories to analyze
        repos = [
            "https://github.com/openai/openai-python",
            "https://github.com/anthropics/anthropic-sdk-python"
        ]
        
        # Count stars for each repository
        for repo in repos:
            stars = await count_stars(session, repo)
            print(f"{repo}: {stars} stars")

if __name__ == "__main__":
    asyncio.run(main())

Erweiterte Beispiele

Support

Brauchen Sie Hilfe?

Bei Fragen zur API oder um Probleme zu melden, schreiben Sie eine E-Mail an [email protected]