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)