mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-06 03:00:16 -04:00
feat(deployed-chat): added file upload to workflow execute API, added to deployed chat, updated chat panel (#1588)
* feat(deployed-chat): updated chat panel UI, deployed chat and API can now accept files * added nested tag dropdown for files * added duplicate file validation to chat panel * update docs & SDKs * fixed build * rm extraneous comments * ack PR comments, cut multiple DB roundtrips for permissions & api key checks in api/workflows * allow read-only users to access deployment info, but not take actions * add downloadable file to logs for files passed in via API * protect files/serve route that is only used client-side --------- Co-authored-by: waleed <waleed>
This commit is contained in:
55
packages/python-sdk/examples/file_upload.py
Normal file
55
packages/python-sdk/examples/file_upload.py
Normal file
@@ -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()
|
||||
Reference in New Issue
Block a user