Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stitchlab_agentcore-1.0.0.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stitchlab_agentcore-1.0.0-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file stitchlab_agentcore-1.0.0.tar.gz.

File metadata

  • Download URL: stitchlab_agentcore-1.0.0.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for stitchlab_agentcore-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d7eeb5ef6a8678085c2eac1c6b00f2de3ea45d36327df604305afdeb95dce5aa
MD5 6b2146bac4fd62f3b625346a2be5d6f9
BLAKE2b-256 5e6c61b5dddc5b5a3d53a7fc3fc75235ab9aa67f2355cda6116fa55923c17d20

See more details on using hashes here.

File details

Details for the file stitchlab_agentcore-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for stitchlab_agentcore-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d96f7c89427511d2813bcf16fc37bf62755ffd2a83c66ae9ab522b8b259045f
MD5 b0ccff91702e3df7eba7a657691e5126
BLAKE2b-256 27e04a617d55ef27e14f12d76072dab9c97a8654e875065d76ea353b8f06bce7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page