Skip to main content

Python Integration

Complete examples for integrating PrompTick agents in Python applications.

Installation

pip install requests

Basic Example

import requests
import os
import time
from typing import Dict, Any

PROMPTICK_API_KEY = os.getenv('PROMPTICK_API_KEY')
AGENT_ID = 'agent_abc123'
BASE_URL = 'https://api.promptick.ai/api/v1'

def execute_agent(variables: Dict[str, str]) -> Dict[str, Any]:
"""Execute agent and wait for result"""

# Execute agent
response = requests.post(
f'{BASE_URL}/agents/{AGENT_ID}/execute',
headers={
'Authorization': f'Bearer {PROMPTICK_API_KEY}',
'Content-Type': 'application/json'
},
json={'variables': variables}
)

response.raise_for_status()
job_id = response.json()['jobId']

print(f'Job created: {job_id}')

# Poll for result
return poll_for_result(job_id)

def poll_for_result(job_id: str, max_attempts: int = 30) -> Dict[str, Any]:
"""Poll execution status until completed"""

for i in range(max_attempts):
response = requests.get(
f'{BASE_URL}/agents/{AGENT_ID}/executions/{job_id}',
headers={'Authorization': f'Bearer {PROMPTICK_API_KEY}'}
)

response.raise_for_status()
data = response.json()

if data['status'] == 'completed':
return data['result']

if data['status'] == 'failed':
raise Exception(data.get('error', 'Execution failed'))

time.sleep(2) # Wait 2 seconds

raise TimeoutError('Execution timeout')

# Usage
if __name__ == '__main__':
result = execute_agent({
'product_name': 'Smart Watch Pro',
'target_audience': 'fitness enthusiasts'
})

print('Result:', result['response'])

With Retry Logic

import time
from requests.exceptions import HTTPError

def execute_with_retry(variables: Dict[str, str], max_retries: int = 3) -> Dict[str, Any]:
"""Execute with exponential backoff retry"""

for i in range(max_retries):
try:
return execute_agent(variables)
except HTTPError as e:
if e.response.status_code == 429:
# Rate limit - exponential backoff
delay = 2 ** i
print(f'Rate limited. Retrying in {delay}s...')
time.sleep(delay)
continue
raise

raise Exception('Max retries exceeded')

Flask Integration

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/generate-description', methods=['POST'])
def generate_description():
try:
data = request.json
result = execute_agent({
'product_name': data['productName'],
'features': data['features']
})

return jsonify({'description': result['response']})

except Exception as e:
return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
app.run(port=5000)