Name | ingenious JSON |
Version |
0.2.2
JSON |
| download |
home_page | None |
Summary | An enterprise-grade Python library for quickly setting up APIs to interact with AI Agents |
upload_time | 2025-08-04 04:36:55 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.13 |
license | MIT |
keywords |
agent
autogen
azure
fastapi
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Insight Ingenious
[](https://github.com/Insight-Services-APAC/ingenious)
[](https://www.python.org/downloads/)
[](https://deepwiki.com/Insight-Services-APAC/ingenious)
[](LICENSE)
An enterprise-grade Python library for quickly setting up APIs to interact with AI Agents. Features multi-agent conversation flows using Microsoft's AutoGen, JWT authentication, and comprehensive Azure service integrations with support for both cloud and local implementations.
## Quick Start
Get up and running in 5 minutes with Azure OpenAI!
### Prerequisites
- Python 3.13 or higher (required - earlier versions are not supported)
- Azure OpenAI API credentials
- [uv package manager](https://docs.astral.sh/uv/)
### 5-Minute Setup
1. **Install and Initialize**:
```bash
# Navigate to your desired project directory first
cd /path/to/your/project
# Set up the uv project
uv init
# Choose installation based on features needed
uv add ingenious[standard] # Most common: includes SQL agent support (core, auth, ai, database)
# OR
uv add ingenious[azure-full] # Full Azure integration (core, auth, azure, ai, database, ui)
# OR
uv add ingenious # Minimal installation (base dependencies only)
# Initialize project in the current directory
uv run ingen init
```
2. **Configure Credentials**:
Create a `.env` file with your Azure OpenAI credentials:
```bash
# Create .env file in current directory
touch .env
# Edit .env file with your actual credentials
```
**Required configuration (add to .env file)**:
```bash
# Model Configuration (only INGENIOUS_* variables are used by the system)
INGENIOUS_MODELS__0__MODEL=gpt-4.1-nano
INGENIOUS_MODELS__0__API_TYPE=rest
INGENIOUS_MODELS__0__API_VERSION=2024-12-01-preview
INGENIOUS_MODELS__0__DEPLOYMENT=your-gpt4-deployment-name
INGENIOUS_MODELS__0__API_KEY=your-actual-api-key-here
INGENIOUS_MODELS__0__BASE_URL=https://your-resource.openai.azure.com/
# Basic required settings
INGENIOUS_CHAT_SERVICE__TYPE=multi_agent
INGENIOUS_CHAT_HISTORY__DATABASE_TYPE=sqlite
INGENIOUS_CHAT_HISTORY__DATABASE_PATH=./.tmp/chat_history.db
INGENIOUS_CHAT_HISTORY__MEMORY_PATH=./.tmp
# Optional: Authentication settings (enabled by default)
# INGENIOUS_WEB_CONFIGURATION__ENABLE_AUTHENTICATION=false # To disable auth
```
3. **Validate Configuration**:
```bash
uv run ingen validate # Check configuration before starting
```
**If validation fails with port conflicts**:
```bash
# Check if validation passes with different port
INGENIOUS_WEB_CONFIGURATION__PORT=8001 uv run ingen validate
# Or update your .env file before validating:
echo "INGENIOUS_WEB_CONFIGURATION__PORT=8001" >> .env
uv run ingen validate
```
> **⚠️ BREAKING CHANGE**: Ingenious now uses **pydantic-settings** for configuration via environment variables. Legacy YAML configuration files (`config.yml`, `profiles.yml`) are **no longer supported** and must be migrated to environment variables with `INGENIOUS_` prefixes. Use the migration script:
> ```bash
> uv run python scripts/migrate_config.py --yaml-file config.yml --output .env
> uv run python scripts/migrate_config.py --yaml-file profiles.yml --output .env.profiles
> ```
4. **Start the Server**:
```bash
# Start server on port 8000 (recommended for development)
uv run ingen serve --port 8000
# Additional options:
# --host 0.0.0.0 # Bind host (default: 0.0.0.0)
# --port # Port to bind (default: 80 or $WEB_PORT env var)
# --config config.yml # Legacy config file (deprecated - use environment variables)
# --profile production # Legacy profile (deprecated - use environment variables)
```
5. **Verify Health**:
```bash
# Check server health
curl http://localhost:8000/api/v1/health
```
### Common Issues
#### Port Conflicts
If you encounter "Address already in use" or validation fails with port conflicts:
1. **Check what's using the port**:
```bash
lsof -i :8000 # Check if port 8000 is in use
```
2. **Use a different port**:
```bash
uv run ingen serve --port 8001 # Try port 8001 instead
```
3. **Set port via environment variable** (recommended):
```bash
# Add to your .env file
INGENIOUS_WEB_CONFIGURATION__PORT=8001
```
4. **Update your test commands accordingly**:
```bash
# Update health check
curl http://localhost:8001/api/v1/health
# Update workflow tests (use the new port in all examples below)
```
6. **Test with Core Workflows**:
Create test files to avoid JSON escaping issues:
```bash
# Create test files for each workflow
echo '{"user_prompt": "Analyze this customer feedback: Great product", "conversation_flow": "classification-agent"}' > test_classification.json
echo '{"user_prompt": "Search for documentation about setup", "conversation_flow": "knowledge-base-agent"}' > test_knowledge.json
echo '{"user_prompt": "Show me all tables in the database", "conversation_flow": "sql-manipulation-agent"}' > test_sql.json
# Test each workflow
curl -X POST http://localhost:8000/api/v1/chat -H "Content-Type: application/json" -d @test_classification.json
curl -X POST http://localhost:8000/api/v1/chat -H "Content-Type: application/json" -d @test_knowledge.json
curl -X POST http://localhost:8000/api/v1/chat -H "Content-Type: application/json" -d @test_sql.json
```
**Expected Responses**:
- **Successful classification-agent response**: JSON with message analysis and categories
- **Successful knowledge-base-agent response**: JSON with relevant information retrieved (may indicate empty knowledge base initially)
- **Successful sql-manipulation-agent response**: JSON with query results or confirmation
**If you see error responses**, check the troubleshooting section above or the detailed [troubleshooting guide](docs/getting-started/troubleshooting.md).
That's it! You should see a JSON response with AI analysis of the input.
**Next Steps - Test Additional Workflows**:
7. **Test bike-insights Workflow (Requires `ingen init` first)**:
The `bike-insights` workflow is part of the project template and must be initialized first:
```bash
# First initialize project to get bike-insights workflow
uv run ingen init
# Create bike-insights test data file
# IMPORTANT: bike-insights requires JSON data in the user_prompt field (double-encoded JSON)
# Method 1: Use printf for precise formatting (recommended)
printf '%s\n' '{
"user_prompt": "{\"revision_id\": \"test-v1\", \"identifier\": \"test-001\", \"stores\": [{\"name\": \"Test Store\", \"location\": \"NSW\", \"bike_sales\": [{\"product_code\": \"MB-TREK-2021-XC\", \"quantity_sold\": 2, \"sale_date\": \"2023-04-01\", \"year\": 2023, \"month\": \"April\", \"customer_review\": {\"rating\": 4.5, \"comment\": \"Great bike\"}}], \"bike_stock\": []}]}",
"conversation_flow": "bike-insights"
}' > test_bike_insights.json
# Method 2: Alternative using echo (simpler but watch for shell differences)
echo '{
"user_prompt": "{\"revision_id\": \"test-v1\", \"identifier\": \"test-001\", \"stores\": [{\"name\": \"Test Store\", \"location\": \"NSW\", \"bike_sales\": [{\"product_code\": \"MB-TREK-2021-XC\", \"quantity_sold\": 2, \"sale_date\": \"2023-04-01\", \"year\": 2023, \"month\": \"April\", \"customer_review\": {\"rating\": 4.5, \"comment\": \"Great bike\"}}], \"bike_stock\": []}]}",
"conversation_flow": "bike-insights"
}' > test_bike_insights.json
# Method 3: If heredoc is preferred, ensure proper EOF placement
cat > test_bike_insights.json << 'EOF'
{
"user_prompt": "{\"revision_id\": \"test-v1\", \"identifier\": \"test-001\", \"stores\": [{\"name\": \"Test Store\", \"location\": \"NSW\", \"bike_sales\": [{\"product_code\": \"MB-TREK-2021-XC\", \"quantity_sold\": 2, \"sale_date\": \"2023-04-01\", \"year\": 2023, \"month\": \"April\", \"customer_review\": {\"rating\": 4.5, \"comment\": \"Great bike\"}}], \"bike_stock\": []}]}",
"conversation_flow": "bike-insights"
}
EOF
# Test bike-insights workflow
curl -X POST http://localhost:8000/api/v1/chat -H "Content-Type: application/json" -d @test_bike_insights.json
```
**Expected bike-insights response**: JSON with comprehensive bike sales analysis from multiple agents (fiscal analysis, customer sentiment, summary, and bike lookup).
**Important Notes**:
- **Core Library Workflows** (`classification-agent`, `knowledge-base-agent`, `sql-manipulation-agent`) are always available and accept simple text prompts
- **Template Workflows** like `bike-insights` require JSON-formatted data with specific fields and are only available after running `ingen init`
- The `bike-insights` workflow is the recommended "Hello World" example for new users
## Workflow Categories
Insight Ingenious provides multiple conversation workflows with different configuration requirements:
### Core Library Workflows (Always Available)
These workflows are built into the Ingenious library and available immediately:
- `classification-agent` - Simple text classification and routing to categories (minimal config required)
- `knowledge-base-agent` - Search and retrieve information from knowledge bases (requires Azure Search or uses local ChromaDB by default)
- `sql-manipulation-agent` - Execute SQL queries based on natural language (requires Azure SQL or uses local SQLite by default)
> **Note**: Core workflows support both hyphenated (`classification-agent`) and underscored (`classification_agent`) naming formats for backward compatibility.
### Template Workflows (Created by `ingen init`)
These workflows are provided as examples in the project template when you run `ingen init`:
- `bike-insights` - Comprehensive bike sales analysis showcasing multi-agent coordination (**ONLY available after `ingen init`** - not included in the core library)
> **Important**: The `bike-insights` workflow is NOT part of the core library. It's a template example that's created when you initialize a new project with `ingen init`. This is the recommended "Hello World" example for learning how to build custom workflows.
### Configuration Requirements by Workflow
- **Minimal setup** (Azure OpenAI only): `classification-agent`, `bike-insights` (after `ingen init`)
- **Local implementations**: `knowledge-base-agent` (ChromaDB), `sql-manipulation-agent` (SQLite) - stable and work out-of-the-box
- **Azure integrations**: Azure Search for knowledge base, Azure SQL for database queries - fully supported with proper configuration
> **Note**: Both local (ChromaDB, SQLite) and Azure (Azure Search, Azure SQL) implementations are production-ready. Choose based on your infrastructure requirements. Use `uv run ingen workflows` to check configuration requirements for each workflow.
## Troubleshooting
For common issues like port conflicts, configuration errors, or workflow problems, see the [detailed troubleshooting guide](docs/getting-started/troubleshooting.md).
**Quick fixes for common issues**:
- **Port conflicts**: Use `--port 8001` or set `INGENIOUS_WEB_CONFIGURATION__PORT=8001` in .env
- **JSON escaping errors**: Use file-based approach with heredoc as shown in bike-insights example above
- **Validation failures**: Check the troubleshooting guide for specific error solutions
- **Workflow not found**: Ensure you've run `uv run ingen init` for template workflows like bike-insights
- **Azure OpenAI connection issues**: Verify your API key, endpoint, and deployment name in .env file
## Documentation
For detailed documentation, see the [docs](https://insight-services-apac.github.io/ingenious/).
## Contributing
Contributions are welcome! Please see [CONTRIBUTING.md](https://github.com/Insight-Services-APAC/ingenious/blob/main/CONTRIBUTING.md) for guidelines.
## License
This project is licensed under the terms specified in the [LICENSE](https://github.com/Insight-Services-APAC/ingenious/blob/main/LICENSE) file.
Raw data
{
"_id": null,
"home_page": null,
"name": "ingenious",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.13",
"maintainer_email": null,
"keywords": "agent, autogen, azure, fastapi",
"author": null,
"author_email": "John Rampono <john.rampono@insight.com>, Kokko Ng <kokko.ng@insight.com>, Elliot Zhu <elliot.zhu@insight.com>",
"download_url": "https://files.pythonhosted.org/packages/fb/25/db5d67a1b6677cd0d765e916ae53e429b571cadf19f0189e1776fcb25294/ingenious-0.2.2.tar.gz",
"platform": null,
"description": "# Insight Ingenious\n\n[](https://github.com/Insight-Services-APAC/ingenious)\n[](https://www.python.org/downloads/)\n[](https://deepwiki.com/Insight-Services-APAC/ingenious)\n[](LICENSE)\n\nAn enterprise-grade Python library for quickly setting up APIs to interact with AI Agents. Features multi-agent conversation flows using Microsoft's AutoGen, JWT authentication, and comprehensive Azure service integrations with support for both cloud and local implementations.\n\n## Quick Start\n\nGet up and running in 5 minutes with Azure OpenAI!\n\n### Prerequisites\n- Python 3.13 or higher (required - earlier versions are not supported)\n- Azure OpenAI API credentials\n- [uv package manager](https://docs.astral.sh/uv/)\n\n### 5-Minute Setup\n\n1. **Install and Initialize**:\n ```bash\n # Navigate to your desired project directory first\n cd /path/to/your/project\n\n # Set up the uv project\n uv init\n\n # Choose installation based on features needed\n uv add ingenious[standard] # Most common: includes SQL agent support (core, auth, ai, database)\n # OR\n uv add ingenious[azure-full] # Full Azure integration (core, auth, azure, ai, database, ui)\n # OR\n uv add ingenious # Minimal installation (base dependencies only)\n\n # Initialize project in the current directory\n uv run ingen init\n ```\n\n2. **Configure Credentials**:\n Create a `.env` file with your Azure OpenAI credentials:\n ```bash\n # Create .env file in current directory\n touch .env\n\n # Edit .env file with your actual credentials\n ```\n\n **Required configuration (add to .env file)**:\n ```bash\n # Model Configuration (only INGENIOUS_* variables are used by the system)\n INGENIOUS_MODELS__0__MODEL=gpt-4.1-nano\n INGENIOUS_MODELS__0__API_TYPE=rest\n INGENIOUS_MODELS__0__API_VERSION=2024-12-01-preview\n INGENIOUS_MODELS__0__DEPLOYMENT=your-gpt4-deployment-name\n INGENIOUS_MODELS__0__API_KEY=your-actual-api-key-here\n INGENIOUS_MODELS__0__BASE_URL=https://your-resource.openai.azure.com/\n\n # Basic required settings\n INGENIOUS_CHAT_SERVICE__TYPE=multi_agent\n INGENIOUS_CHAT_HISTORY__DATABASE_TYPE=sqlite\n INGENIOUS_CHAT_HISTORY__DATABASE_PATH=./.tmp/chat_history.db\n INGENIOUS_CHAT_HISTORY__MEMORY_PATH=./.tmp\n\n # Optional: Authentication settings (enabled by default)\n # INGENIOUS_WEB_CONFIGURATION__ENABLE_AUTHENTICATION=false # To disable auth\n ```\n\n3. **Validate Configuration**:\n ```bash\n uv run ingen validate # Check configuration before starting\n ```\n\n **If validation fails with port conflicts**:\n ```bash\n # Check if validation passes with different port\n INGENIOUS_WEB_CONFIGURATION__PORT=8001 uv run ingen validate\n\n # Or update your .env file before validating:\n echo \"INGENIOUS_WEB_CONFIGURATION__PORT=8001\" >> .env\n uv run ingen validate\n ```\n\n > **\u26a0\ufe0f BREAKING CHANGE**: Ingenious now uses **pydantic-settings** for configuration via environment variables. Legacy YAML configuration files (`config.yml`, `profiles.yml`) are **no longer supported** and must be migrated to environment variables with `INGENIOUS_` prefixes. Use the migration script:\n > ```bash\n > uv run python scripts/migrate_config.py --yaml-file config.yml --output .env\n > uv run python scripts/migrate_config.py --yaml-file profiles.yml --output .env.profiles\n > ```\n\n4. **Start the Server**:\n ```bash\n # Start server on port 8000 (recommended for development)\n uv run ingen serve --port 8000\n\n # Additional options:\n # --host 0.0.0.0 # Bind host (default: 0.0.0.0)\n # --port # Port to bind (default: 80 or $WEB_PORT env var)\n # --config config.yml # Legacy config file (deprecated - use environment variables)\n # --profile production # Legacy profile (deprecated - use environment variables)\n ```\n\n5. **Verify Health**:\n ```bash\n # Check server health\n curl http://localhost:8000/api/v1/health\n ```\n\n### Common Issues\n\n#### Port Conflicts\nIf you encounter \"Address already in use\" or validation fails with port conflicts:\n\n1. **Check what's using the port**:\n ```bash\n lsof -i :8000 # Check if port 8000 is in use\n ```\n\n2. **Use a different port**:\n ```bash\n uv run ingen serve --port 8001 # Try port 8001 instead\n ```\n\n3. **Set port via environment variable** (recommended):\n ```bash\n # Add to your .env file\n INGENIOUS_WEB_CONFIGURATION__PORT=8001\n ```\n\n4. **Update your test commands accordingly**:\n ```bash\n # Update health check\n curl http://localhost:8001/api/v1/health\n\n # Update workflow tests (use the new port in all examples below)\n ```\n\n6. **Test with Core Workflows**:\n\n Create test files to avoid JSON escaping issues:\n ```bash\n # Create test files for each workflow\n echo '{\"user_prompt\": \"Analyze this customer feedback: Great product\", \"conversation_flow\": \"classification-agent\"}' > test_classification.json\n echo '{\"user_prompt\": \"Search for documentation about setup\", \"conversation_flow\": \"knowledge-base-agent\"}' > test_knowledge.json\n echo '{\"user_prompt\": \"Show me all tables in the database\", \"conversation_flow\": \"sql-manipulation-agent\"}' > test_sql.json\n\n # Test each workflow\n curl -X POST http://localhost:8000/api/v1/chat -H \"Content-Type: application/json\" -d @test_classification.json\n curl -X POST http://localhost:8000/api/v1/chat -H \"Content-Type: application/json\" -d @test_knowledge.json\n curl -X POST http://localhost:8000/api/v1/chat -H \"Content-Type: application/json\" -d @test_sql.json\n ```\n\n**Expected Responses**:\n- **Successful classification-agent response**: JSON with message analysis and categories\n- **Successful knowledge-base-agent response**: JSON with relevant information retrieved (may indicate empty knowledge base initially)\n- **Successful sql-manipulation-agent response**: JSON with query results or confirmation\n\n**If you see error responses**, check the troubleshooting section above or the detailed [troubleshooting guide](docs/getting-started/troubleshooting.md).\n\nThat's it! You should see a JSON response with AI analysis of the input.\n\n**Next Steps - Test Additional Workflows**:\n\n7. **Test bike-insights Workflow (Requires `ingen init` first)**:\n\n The `bike-insights` workflow is part of the project template and must be initialized first:\n ```bash\n # First initialize project to get bike-insights workflow\n uv run ingen init\n\n # Create bike-insights test data file\n # IMPORTANT: bike-insights requires JSON data in the user_prompt field (double-encoded JSON)\n # Method 1: Use printf for precise formatting (recommended)\n printf '%s\\n' '{\n \"user_prompt\": \"{\\\"revision_id\\\": \\\"test-v1\\\", \\\"identifier\\\": \\\"test-001\\\", \\\"stores\\\": [{\\\"name\\\": \\\"Test Store\\\", \\\"location\\\": \\\"NSW\\\", \\\"bike_sales\\\": [{\\\"product_code\\\": \\\"MB-TREK-2021-XC\\\", \\\"quantity_sold\\\": 2, \\\"sale_date\\\": \\\"2023-04-01\\\", \\\"year\\\": 2023, \\\"month\\\": \\\"April\\\", \\\"customer_review\\\": {\\\"rating\\\": 4.5, \\\"comment\\\": \\\"Great bike\\\"}}], \\\"bike_stock\\\": []}]}\",\n \"conversation_flow\": \"bike-insights\"\n }' > test_bike_insights.json\n\n # Method 2: Alternative using echo (simpler but watch for shell differences)\n echo '{\n \"user_prompt\": \"{\\\"revision_id\\\": \\\"test-v1\\\", \\\"identifier\\\": \\\"test-001\\\", \\\"stores\\\": [{\\\"name\\\": \\\"Test Store\\\", \\\"location\\\": \\\"NSW\\\", \\\"bike_sales\\\": [{\\\"product_code\\\": \\\"MB-TREK-2021-XC\\\", \\\"quantity_sold\\\": 2, \\\"sale_date\\\": \\\"2023-04-01\\\", \\\"year\\\": 2023, \\\"month\\\": \\\"April\\\", \\\"customer_review\\\": {\\\"rating\\\": 4.5, \\\"comment\\\": \\\"Great bike\\\"}}], \\\"bike_stock\\\": []}]}\",\n \"conversation_flow\": \"bike-insights\"\n }' > test_bike_insights.json\n\n # Method 3: If heredoc is preferred, ensure proper EOF placement\n cat > test_bike_insights.json << 'EOF'\n {\n \"user_prompt\": \"{\\\"revision_id\\\": \\\"test-v1\\\", \\\"identifier\\\": \\\"test-001\\\", \\\"stores\\\": [{\\\"name\\\": \\\"Test Store\\\", \\\"location\\\": \\\"NSW\\\", \\\"bike_sales\\\": [{\\\"product_code\\\": \\\"MB-TREK-2021-XC\\\", \\\"quantity_sold\\\": 2, \\\"sale_date\\\": \\\"2023-04-01\\\", \\\"year\\\": 2023, \\\"month\\\": \\\"April\\\", \\\"customer_review\\\": {\\\"rating\\\": 4.5, \\\"comment\\\": \\\"Great bike\\\"}}], \\\"bike_stock\\\": []}]}\",\n \"conversation_flow\": \"bike-insights\"\n }\n EOF\n\n # Test bike-insights workflow\n curl -X POST http://localhost:8000/api/v1/chat -H \"Content-Type: application/json\" -d @test_bike_insights.json\n ```\n\n **Expected bike-insights response**: JSON with comprehensive bike sales analysis from multiple agents (fiscal analysis, customer sentiment, summary, and bike lookup).\n\n**Important Notes**:\n- **Core Library Workflows** (`classification-agent`, `knowledge-base-agent`, `sql-manipulation-agent`) are always available and accept simple text prompts\n- **Template Workflows** like `bike-insights` require JSON-formatted data with specific fields and are only available after running `ingen init`\n- The `bike-insights` workflow is the recommended \"Hello World\" example for new users\n\n## Workflow Categories\n\nInsight Ingenious provides multiple conversation workflows with different configuration requirements:\n\n### Core Library Workflows (Always Available)\nThese workflows are built into the Ingenious library and available immediately:\n\n- `classification-agent` - Simple text classification and routing to categories (minimal config required)\n- `knowledge-base-agent` - Search and retrieve information from knowledge bases (requires Azure Search or uses local ChromaDB by default)\n- `sql-manipulation-agent` - Execute SQL queries based on natural language (requires Azure SQL or uses local SQLite by default)\n\n> **Note**: Core workflows support both hyphenated (`classification-agent`) and underscored (`classification_agent`) naming formats for backward compatibility.\n\n### Template Workflows (Created by `ingen init`)\nThese workflows are provided as examples in the project template when you run `ingen init`:\n\n- `bike-insights` - Comprehensive bike sales analysis showcasing multi-agent coordination (**ONLY available after `ingen init`** - not included in the core library)\n\n> **Important**: The `bike-insights` workflow is NOT part of the core library. It's a template example that's created when you initialize a new project with `ingen init`. This is the recommended \"Hello World\" example for learning how to build custom workflows.\n\n### Configuration Requirements by Workflow\n- **Minimal setup** (Azure OpenAI only): `classification-agent`, `bike-insights` (after `ingen init`)\n- **Local implementations**: `knowledge-base-agent` (ChromaDB), `sql-manipulation-agent` (SQLite) - stable and work out-of-the-box\n- **Azure integrations**: Azure Search for knowledge base, Azure SQL for database queries - fully supported with proper configuration\n\n> **Note**: Both local (ChromaDB, SQLite) and Azure (Azure Search, Azure SQL) implementations are production-ready. Choose based on your infrastructure requirements. Use `uv run ingen workflows` to check configuration requirements for each workflow.\n\n## Troubleshooting\n\nFor common issues like port conflicts, configuration errors, or workflow problems, see the [detailed troubleshooting guide](docs/getting-started/troubleshooting.md).\n\n**Quick fixes for common issues**:\n- **Port conflicts**: Use `--port 8001` or set `INGENIOUS_WEB_CONFIGURATION__PORT=8001` in .env\n- **JSON escaping errors**: Use file-based approach with heredoc as shown in bike-insights example above\n- **Validation failures**: Check the troubleshooting guide for specific error solutions\n- **Workflow not found**: Ensure you've run `uv run ingen init` for template workflows like bike-insights\n- **Azure OpenAI connection issues**: Verify your API key, endpoint, and deployment name in .env file\n\n## Documentation\n\nFor detailed documentation, see the [docs](https://insight-services-apac.github.io/ingenious/).\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](https://github.com/Insight-Services-APAC/ingenious/blob/main/CONTRIBUTING.md) for guidelines.\n\n## License\n\nThis project is licensed under the terms specified in the [LICENSE](https://github.com/Insight-Services-APAC/ingenious/blob/main/LICENSE) file.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "An enterprise-grade Python library for quickly setting up APIs to interact with AI Agents",
"version": "0.2.2",
"project_urls": {
"Documentation": "https://insight-services-apac.github.io/ingenious/",
"Homepage": "https://github.com/Insight-Services-APAC/ingenious",
"Issues": "https://github.com/Insight-Services-APAC/ingenious/issues",
"Repository": "https://github.com/Insight-Services-APAC/ingenious"
},
"split_keywords": [
"agent",
" autogen",
" azure",
" fastapi"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3ca891bb5b9e9931fc1f7c3378a3cfccf7b85438bafb35c528fb071e03a14807",
"md5": "9645c548a66d0424dc6e62bc648ec5ef",
"sha256": "2b0dc88f7c28f0ec04f8b4c3a56fd2ed6510203c7d1c40794d1ac2d284549c37"
},
"downloads": -1,
"filename": "ingenious-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9645c548a66d0424dc6e62bc648ec5ef",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.13",
"size": 386970,
"upload_time": "2025-08-04T04:36:54",
"upload_time_iso_8601": "2025-08-04T04:36:54.018319Z",
"url": "https://files.pythonhosted.org/packages/3c/a8/91bb5b9e9931fc1f7c3378a3cfccf7b85438bafb35c528fb071e03a14807/ingenious-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fb25db5d67a1b6677cd0d765e916ae53e429b571cadf19f0189e1776fcb25294",
"md5": "3365d3dca22ecf4885ac93208dcdd232",
"sha256": "beb5d24422cfea980107edf48f42d31c2590e2fc04721915e3d2a74d33c41488"
},
"downloads": -1,
"filename": "ingenious-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "3365d3dca22ecf4885ac93208dcdd232",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.13",
"size": 314400,
"upload_time": "2025-08-04T04:36:55",
"upload_time_iso_8601": "2025-08-04T04:36:55.965504Z",
"url": "https://files.pythonhosted.org/packages/fb/25/db5d67a1b6677cd0d765e916ae53e429b571cadf19f0189e1776fcb25294/ingenious-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-04 04:36:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Insight-Services-APAC",
"github_project": "ingenious",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "ingenious"
}