StitchLab agent core application
Project description
StitchLab Agent Core
A powerful agent core application built with modern Python frameworks for AI agent development.
Features
- FastAPI-based runtime environment
- Support for multiple AI backends via LiteLLM
- Langfuse integration for monitoring and observability
- MCP (Model Context Protocol) support
- Pydantic-based schema validation
- Asyncio-native async/await support
Installation
Install from PyPI:
pip install stitchlab-agentcore
Requirements
- Python 3.11 or higher
Quick Start
Basic Example
Here's a complete example of how to use the StitchLab Agent Core library:
import os
from dotenv import load_dotenv
load_dotenv()
from stitchlab_agentcore.runtime.factory import AgentFactory
from stitchlab_agentcore.runtime.app import StitchLabAgentCoreApp
from stitchlab_agentcore.config import GlobalConfig, BaseSettings
from typing import Optional
from strands import Agent, tool
import logging
logger = logging.getLogger(__name__)
### ================ Implement your Strands Agent ================
class GlobalSettings(BaseSettings):
APP_NAME: str = 'Your Strands Agent App Name'
VERBOSE: bool = os.getenv('VERBOSE', 'True').lower() in ('true', '1', 'yes')
DEBUG: bool = os.getenv('DEBUG', 'False').lower() in ('true', '1', 'yes')
VERIFY_CERTIFICATE: bool = os.getenv('VERIFY_CERTIFICATE', 'True').lower() in ('true', '1', 'yes')
MCP_URL: str = os.getenv('MCP_URL')
MCP_TOOLS: list[str] = [tool.strip() for tool in os.getenv('MCP_TOOLS', '-').split(',')]
MODEL_ID: str = os.getenv('BEDROCK_MODEL_ID', 'bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0')
MEMORY_ID: str = os.getenv('BEDROCK_AGENTCORE_MEMORY_ID')
BEDROCK_REGION: str = os.getenv('BEDROCK_REGION')
BEDROCK_GUARDRAIL_TRACE: str = "disabled"
BEDROCK_GUARDRAIL_ID: Optional[str] = None
BEDROCK_GUARDRAIL_VER: Optional[str] = None
LANGFUSE_PUBLIC_KEY: Optional[str] = os.getenv("LANGFUSE_PUBLIC_KEY")
LANGFUSE_SECRET_KEY: Optional[str] = os.getenv("LANGFUSE_SECRET_KEY")
LANGFUSE_HOST: Optional[str] = os.getenv("LANGFUSE_HOST")
class AppConfig(GlobalConfig[GlobalSettings]):
pass
CONFIG = AppConfig(GlobalSettings())
@tool
def subtract(a: int, b: int) -> int:
"""Calculate the difference between two numbers"""
return a - b
@tool
def multiply(a: int, b: int) -> int:
"""Calculate the product of two numbers"""
return a * b
SYSTEM_PROMPT = """
You are a good friend.. Be nice
"""
TOOLS = [
subtract,
multiply
]
### ================ End of Implementation ================
AGENT_FACTORY = AgentFactory(
system_prompt=SYSTEM_PROMPT,
local_tools=TOOLS,
config=CONFIG
)
async def create_agent(actor_id: str, session_id: str, trace_attributes: Optional[dict] = None) -> Optional[Agent]:
return await AGENT_FACTORY.create_agent(actor_id=actor_id, session_id=session_id, trace_attributes=trace_attributes)
app = StitchLabAgentCoreApp(debug=True).initialize()
@app.agent_entrypoint(create_agent)
async def agent_invocation(payload):
pass
if __name__ == "__main__":
CONFIG.logger.info(f"Starting {CONFIG.settings.APP_NAME} on FastAPI server...")
app.run()
Configuration
Configure the application using environment variables or .env file:
# Add your configuration here
Architecture
The StitchLab Agent Core provides:
- Runtime: FastAPI-based application runtime for agents
- Schema: Pydantic models for data validation
- Config: Centralized configuration management
- Assets: Built-in resources and caching
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues, questions, or contributions, please visit the GitHub repository.
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 stitchlab_agentcore-0.1.6.tar.gz.
File metadata
- Download URL: stitchlab_agentcore-0.1.6.tar.gz
- Upload date:
- Size: 14.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1fd5778cb87d20c67db02d984740cc23a162a26a5f360027fce41908b6f92f9
|
|
| MD5 |
91138eae46a71eab7cf7a2fad60dfb6b
|
|
| BLAKE2b-256 |
ad1a0cc21f1c21f8547f3ca71ee052769d4fe383ef3043c1fcf98425a1fac122
|
File details
Details for the file stitchlab_agentcore-0.1.6-py3-none-any.whl.
File metadata
- Download URL: stitchlab_agentcore-0.1.6-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
368e775a74b11a804ca77268292e0ddda1e8d74ece2284dfb56c85abbeae5eeb
|
|
| MD5 |
336965a422fc1798a2b1b9ff8868bb78
|
|
| BLAKE2b-256 |
92c33ba9c4508629a7ea420c67c70a1a6021c73b52b51b8f48efe0e223230227
|