Sema4ai library for RPA Framework
Project description
This library enables Sema4.ai Agent API integration for RPA Framework libraries, allowing you to communicate with AI agents in your automation workflows.
Installation
pip install rpaframework-sema4ai
Requirements
Python 3.10 or higher
A Sema4.ai account with API access
Agent API key and endpoint URL
Features
Ask Agent: Send messages to AI agents and receive responses
Conversation Management: Create and continue conversations with agents
Message History: Retrieve conversation history and messages
Async Support: Non-blocking async methods for concurrent operations
Client Caching: Efficient reuse of API clients across multiple requests
Usage Examples
Robot Framework
*** Settings ***
Library RPA.Sema4AI
*** Variables ***
${API_KEY} %{SEMA4AI_API_KEY}
${API_ENDPOINT} https://api.sema4.ai/v1
*** Tasks ***
Chat With Agent
${response}= Ask Agent
... message=What is the weather today?
... agent_api_key=${API_KEY}
... agent_api_endpoint=${API_ENDPOINT}
... agent_name=Weather Assistant
Log Response: ${response.response}
Log Conversation ID: ${response.conversation_id}
Continue Conversation
${response}= Ask Agent
... message=What about tomorrow?
... agent_api_key=${API_KEY}
... agent_api_endpoint=${API_ENDPOINT}
... agent_name=Weather Assistant
... conversation_id=${PREV_CONVERSATION_ID}
Log Response: ${response.response}
List Conversations
${conversations}= Get Conversations
... agent_api_key=${API_KEY}
... agent_api_endpoint=${API_ENDPOINT}
... agent_name=Weather Assistant
FOR ${conv} IN @{conversations}
Log ${conv.name} (ID: ${conv.conversation_id})
END
Python
from RPA.Sema4AI import Sema4AI
client = Sema4AI()
# Send a message to an agent
response = client.ask_agent(
message="What is the weather today?",
agent_api_key="your-api-key",
agent_api_endpoint="https://api.sema4.ai/v1",
agent_name="Weather Assistant"
)
print(f"Response: {response.response}")
print(f"Conversation ID: {response.conversation_id}")
print(f"Execution time: {response.execution_time}s")
# Continue the conversation
followup = client.ask_agent(
message="What about tomorrow?",
agent_api_key="your-api-key",
agent_api_endpoint="https://api.sema4.ai/v1",
agent_name="Weather Assistant",
conversation_id=response.conversation_id
)
print(f"Follow-up: {followup.response}")
# Get all conversations for an agent
conversations = client.get_conversations(
agent_api_key="your-api-key",
agent_api_endpoint="https://api.sema4.ai/v1",
agent_name="Weather Assistant"
)
for conv in conversations:
print(f"Conversation: {conv.name} (ID: {conv.conversation_id})")
# Get messages in a conversation
messages = client.get_messages(
agent_api_key="your-api-key",
agent_api_endpoint="https://api.sema4.ai/v1",
conversation_id=response.conversation_id,
agent_name="Weather Assistant"
)
for msg in messages:
print(f"{msg.get('role')}: {msg.get('content')}")
Async Python
For non-blocking operations in async contexts:
import asyncio
from RPA.Sema4AI import Sema4AI
async def main():
client = Sema4AI()
# Concurrent agent requests
tasks = [
client.ask_agent_async(
message=f"Question {i}",
agent_api_key="your-api-key",
agent_api_endpoint="https://api.sema4.ai/v1",
agent_name="My Assistant"
)
for i in range(3)
]
responses = await asyncio.gather(*tasks)
for i, response in enumerate(responses):
print(f"Response {i}: {response.response}")
asyncio.run(main())
API Reference
Sema4AI Class
- ask_agent(message, agent_api_key, agent_api_endpoint, agent_id=None, agent_name=None, conversation_id=None, conversation_name=None)
Send a message to an agent and receive a response.
message: The message content to send
agent_api_key: API key for authentication
agent_api_endpoint: The agent API endpoint URL
agent_id: Agent ID (use either agent_id or agent_name)
agent_name: Agent name (use either agent_id or agent_name)
conversation_id: Optional, for continuing existing conversations
conversation_name: Optional, name for new conversations
Returns: MessageResponse object with conversation_id, response, agent_name, agent_id, and execution_time
- get_conversations(agent_api_key, agent_api_endpoint, agent_id=None, agent_name=None)
Get all conversations for an agent.
Returns: ConversationsResult containing list of Conversation objects
- get_messages(agent_api_key, agent_api_endpoint, conversation_id, agent_id=None, agent_name=None)
Get all messages in a conversation.
Returns: MessagesResult containing list of message dictionaries
Async variants: ask_agent_async, get_conversations_async, get_messages_async
Response Objects
- MessageResponse
conversation_id: ID of the conversation
response: Text response from the agent
agent_name: Name of the responding agent
agent_id: ID of the responding agent
execution_time: Time taken in seconds
- ConversationsResult
conversations: List of Conversation objects
execution_time: Time taken in seconds
Supports iteration and indexing
- MessagesResult
messages: List of message dictionaries
execution_time: Time taken in seconds
Supports iteration and indexing
- Conversation
conversation_id: Unique conversation identifier
name: Conversation name
agent_id: ID of the associated agent
Error Handling
from RPA.Sema4AI import Sema4AI, Sema4aiException
client = Sema4AI()
try:
response = client.ask_agent(
message="Hello",
agent_api_key="your-api-key",
agent_api_endpoint="https://api.sema4.ai/v1",
agent_name="NonExistent Agent"
)
except Sema4aiException as e:
print(f"Error: {e}")
if e.status_code:
print(f"HTTP Status: {e.status_code}")
except ValueError as e:
print(f"Validation error: {e}")
Configuration
The library supports multiple URL formats for the API endpoint:
Direct API URL: https://api.sema4.ai/v1
Tenant URL: https://ace-xxxxx.prod-demo.sema4ai.work/tenants/GUID
Base URL: https://ace-xxxxx.prod-demo.sema4ai.work
All formats are automatically normalized to the correct API endpoint.
License
Apache License 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rpaframework_sema4ai-1.1.0.tar.gz.
File metadata
- Download URL: rpaframework_sema4ai-1.1.0.tar.gz
- Upload date:
- Size: 81.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d27164425d1dc7f4a5a09462dfa0537158fb85144a42f9b61ac87378bd2b14de
|
|
| MD5 |
b9bc4a4482ebb2a9abc5a86987cdc77c
|
|
| BLAKE2b-256 |
9186f2c85ff996d2d5b5fcf0f08da83e33fa77a0c1c630919034b752731bb5c7
|
File details
Details for the file rpaframework_sema4ai-1.1.0-py3-none-any.whl.
File metadata
- Download URL: rpaframework_sema4ai-1.1.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22477786c1727f489c450a4697674ac61229160e31c71e191bc43fbd0e26d00b
|
|
| MD5 |
1679588af7e3c74cd11e156a5ce880dd
|
|
| BLAKE2b-256 |
46685188e117ea21bdccfb69a8f585d04c265bdd6a76ae3fc64248487645df60
|