chore: import upstream snapshot with attribution
Publish CLI Package / publish-npm (push) Waiting to run
Publish Python SDK / publish-pypi (push) Waiting to run
Publish TypeScript SDK / publish-npm (push) Waiting to run
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 13:20:55 +08:00
commit d25d482dc2
13754 changed files with 4996608 additions and 0 deletions
+260
View File
@@ -0,0 +1,260 @@
#!/usr/bin/env python3
"""
Basic usage examples for the Sim Python SDK
"""
import os
from simstudio import SimStudioClient, SimStudioError
def basic_example():
"""Example 1: Basic workflow execution"""
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
try:
# Execute a workflow without input
result = client.execute_workflow("your-workflow-id")
if result.success:
print("✅ Workflow executed successfully!")
print(f"Output: {result.output}")
if result.metadata:
print(f"Duration: {result.metadata.get('duration')} ms")
else:
print(f"❌ Workflow failed: {result.error}")
except SimStudioError as error:
print(f"SDK Error: {error} (Code: {error.code})")
except Exception as error:
print(f"Unexpected error: {error}")
def with_input_example():
"""Example 2: Workflow execution with input data"""
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
try:
result = client.execute_workflow(
"your-workflow-id",
input_data={
"message": "Hello from Python SDK!",
"user_id": "12345",
"data": {
"type": "analysis",
"parameters": {
"include_metadata": True,
"format": "json"
}
}
},
timeout=60.0 # 60 seconds
)
if result.success:
print("✅ Workflow executed successfully!")
print(f"Output: {result.output}")
if result.metadata:
print(f"Duration: {result.metadata.get('duration')} ms")
else:
print(f"❌ Workflow failed: {result.error}")
except SimStudioError as error:
print(f"SDK Error: {error} (Code: {error.code})")
except Exception as error:
print(f"Unexpected error: {error}")
def status_example():
"""Example 3: Workflow validation and status checking"""
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
try:
# Check if workflow is ready
is_ready = client.validate_workflow("your-workflow-id")
print(f"Workflow ready: {is_ready}")
# Get detailed status
status = client.get_workflow_status("your-workflow-id")
print(f"Status: {{\n"
f" deployed: {status.is_deployed},\n"
f" needs_redeployment: {status.needs_redeployment},\n"
f" deployed_at: {status.deployed_at}\n"
f"}}")
if status.is_deployed:
# Execute the workflow
result = client.execute_workflow("your-workflow-id")
print(f"Result: {result}")
except Exception as error:
print(f"Error: {error}")
def context_manager_example():
"""Example 4: Using context manager"""
with SimStudioClient(api_key=os.getenv("SIM_API_KEY")) as client:
try:
result = client.execute_workflow("your-workflow-id")
print(f"Result: {result}")
except Exception as error:
print(f"Error: {error}")
# Session is automatically closed here
def batch_execution_example():
"""Example 5: Batch workflow execution"""
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
workflows = [
("workflow-1", {"type": "analysis", "data": "sample1"}),
("workflow-2", {"type": "processing", "data": "sample2"}),
("workflow-3", {"type": "validation", "data": "sample3"}),
]
results = []
for workflow_id, input_data in workflows:
try:
# Validate workflow before execution
if not client.validate_workflow(workflow_id):
print(f"⚠️ Skipping {workflow_id}: not deployed")
continue
result = client.execute_workflow(workflow_id, input_data)
results.append({
"workflow_id": workflow_id,
"success": result.success,
"output": result.output,
"error": result.error
})
status = "✅ Success" if result.success else "❌ Failed"
print(f"{status}: {workflow_id}")
except SimStudioError as error:
results.append({
"workflow_id": workflow_id,
"success": False,
"error": str(error)
})
print(f"❌ SDK Error in {workflow_id}: {error}")
except Exception as error:
results.append({
"workflow_id": workflow_id,
"success": False,
"error": str(error)
})
print(f"❌ Unexpected error in {workflow_id}: {error}")
# Summary
successful = sum(1 for r in results if r["success"])
total = len(results)
print(f"\n📊 Summary: {successful}/{total} workflows completed successfully")
return results
def streaming_example():
"""Example 6: Workflow execution with streaming"""
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
try:
result = client.execute_workflow(
"your-workflow-id",
input_data={"message": "Count to five"},
stream=True,
selected_outputs=["agent1.content"], # Use blockName.attribute format
timeout=60.0
)
if result.success:
print("✅ Workflow executed successfully!")
print(f"Output: {result.output}")
if result.metadata:
print(f"Duration: {result.metadata.get('duration')} ms")
else:
print(f"❌ Workflow failed: {result.error}")
except SimStudioError as error:
print(f"SDK Error: {error} (Code: {error.code})")
except Exception as error:
print(f"Unexpected error: {error}")
def error_handling_example():
"""Example 7: Comprehensive error handling"""
client = SimStudioClient(api_key=os.getenv("SIM_API_KEY"))
try:
result = client.execute_workflow("your-workflow-id")
if result.success:
print("✅ Workflow executed successfully!")
print(f"Output: {result.output}")
return result
else:
print(f"❌ Workflow failed: {result.error}")
return result
except SimStudioError as error:
if error.code == "UNAUTHORIZED":
print("❌ Invalid API key")
elif error.code == "TIMEOUT":
print("⏱️ Workflow execution timed out")
elif error.code == "USAGE_LIMIT_EXCEEDED":
print("💳 Usage limit exceeded")
elif error.code == "INVALID_JSON":
print("📝 Invalid JSON in request body")
elif error.status == 404:
print("🔍 Workflow not found")
elif error.status == 403:
print("🚫 Workflow is not deployed")
else:
print(f"⚠️ Workflow error: {error}")
raise
except Exception as error:
print(f"💥 Unexpected error: {error}")
raise
if __name__ == "__main__":
print("🚀 Running Sim Python SDK Examples\n")
# Check if API key is set
if not os.getenv("SIM_API_KEY"):
print("❌ Please set SIM_API_KEY environment variable")
exit(1)
try:
print("1️⃣ Basic Example:")
basic_example()
print("\n✅ Basic example completed\n")
print("2️⃣ Input Example:")
with_input_example()
print("\n✅ Input example completed\n")
print("3️⃣ Status Example:")
status_example()
print("\n✅ Status example completed\n")
print("4️⃣ Context Manager Example:")
context_manager_example()
print("\n✅ Context manager example completed\n")
print("5️⃣ Batch Execution Example:")
batch_execution_example()
print("\n✅ Batch execution example completed\n")
print("6️⃣ Streaming Example:")
streaming_example()
print("\n✅ Streaming example completed\n")
print("7️⃣ Error Handling Example:")
error_handling_example()
print("\n✅ Error handling example completed\n")
except Exception as e:
print(f"\n💥 Example failed: {e}")
exit(1)
print("🎉 All examples completed successfully!")
@@ -0,0 +1,55 @@
"""
Example: Upload files with workflow execution
This example demonstrates how to upload files when executing a workflow.
Files are automatically detected and converted to base64 format.
"""
from simstudio import SimStudioClient
import os
def main():
# Initialize the client
api_key = os.getenv('SIM_API_KEY')
if not api_key:
raise ValueError('SIM_API_KEY environment variable is required')
client = SimStudioClient(api_key=api_key)
# Example 1: Upload a single file
# Include file under the field name from your workflow's API trigger input format
print("Example 1: Upload a single file")
with open('document.pdf', 'rb') as f:
result = client.execute_workflow(
workflow_id='your-workflow-id',
input_data={
'documents': [f], # Field name must match your API trigger's file input field
'instructions': 'Analyze this document'
}
)
if result.success:
print(f"Success! Output: {result.output}")
else:
print(f"Failed: {result.error}")
# Example 2: Upload multiple files
print("\nExample 2: Upload multiple files")
with open('document1.pdf', 'rb') as f1, open('document2.pdf', 'rb') as f2:
result = client.execute_workflow(
workflow_id='your-workflow-id',
input_data={
'attachments': [f1, f2], # Field name must match your API trigger's file input field
'query': 'Compare these documents'
}
)
if result.success:
print(f"Success! Output: {result.output}")
else:
print(f"Failed: {result.error}")
if __name__ == '__main__':
main()