rpaframework-sema4ai
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
Metadata
Release files for rpaframework-sema4ai 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| rpaframework_sema4ai-1.1.1.tar.gz | 109.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rpaframework_sema4ai-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 122.2 kB
Release files / rpaframework_sema4ai-1.1.1.tar.gz
| Download URL | rpaframework_sema4ai-1.1.1.tar.gz |
|---|---|
| Size | 109.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ac54ef0e4ea64565bb59f1394e693cb9bb9a1ab177c7a83192fc2c151307086c
|
|
BLAKE2b-256 checksum How to use checksums |
eafa5a9708d80e04ca46577071319670ae6b004f11e90d148d587d8c74a264e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / rpaframework_sema4ai-1.1.1-py3-none-any.whl
| Download URL | rpaframework_sema4ai-1.1.1-py3-none-any.whl |
|---|---|
| Size | 12.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bb1e6a637ce7e6604633d1622f1494db67b0a6652b89f199b4aad53bcfdd40ad
|
|
BLAKE2b-256 checksum How to use checksums |
087844bb79c183eee0e18e66a0334bbfa9e9d743252c6c0ecf40436a2ec687a8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for rpaframework-sema4ai 1.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.