Spaces:
Sleeping
Sleeping
| # AworldServer | |
| AworldServer is an execution environment for the Aworld framework that integrates MCP LLM models. It supports distributed deployment and dynamic scaling. | |
|  | |
| The system features: | |
| - Distributed Architecture: Supports multi-server deployment with load balancing | |
| - Dynamic Scaling: Ability to adjust server capacity based on demand | |
| - LLM Integration: Built-in MCP LLM model support | |
| - Asynchronous Processing: Uses asynchronous programming patterns for improved performance | |
| - Containerized Deployment: Docker containerization support for easy environment management | |
| ## 🚀 Quick Start | |
| 1. Start services using Docker Compose: | |
| ```sh | |
| docker build --build-arg MINIMUM_BUILD=true -f Dockerfile --progress=plain -t aworldserver:main . | |
| docker compose up -d | |
| ``` | |
| 2. Configure the number of server instances: | |
| You can modify the `docker-compose.yaml` file to adjust the number of server instances. The default configuration includes 3 instances: | |
| 3. Usage Methods: | |
| a. OpenWebUI Integration: | |
| - Configure external link in OpenWebUI settings | |
| - Add AworldServer endpoints to the configuration | |
| - Set up API key authentication | |
| b. Python Client Usage: | |
| ```python | |
| # Initialize AworldTaskClient with server endpoints | |
| AWORLD_TASK_CLIENT = AworldTaskClient( | |
| know_hosts=["localhost:9299", "localhost:9399", "localhost:9499"] | |
| ) | |
| async def _run_gaia_task(gaia_question_id: str) -> None: | |
| """Run a single Gaia task with the given question ID. | |
| Args: | |
| gaia_question_id: The ID of the question to process | |
| """ | |
| global AWORLD_TASK_CLIENT | |
| task_id = str(uuid.uuid4()) | |
| # Submit task to Aworld server | |
| await AWORLD_TASK_CLIENT.submit_task( | |
| AworldTask( | |
| task_id=task_id, | |
| agent_id="gaia_agent", | |
| agent_input=gaia_question_id, | |
| session_id="session_id", | |
| user_id="SYSTEM" | |
| ) | |
| ) | |
| # Get and print task result | |
| task_result = await AWORLD_TASK_CLIENT.get_task_state(task_id=task_id) | |
| print(task_result) | |
| async def _batch_run_gaia_task(start_i: int, end_i: int) -> None: | |
| """Run multiple Gaia tasks in parallel. | |
| Args: | |
| start_i: Starting question ID | |
| end_i: Ending question ID | |
| """ | |
| tasks = [ | |
| _run_gaia_task(str(i)) | |
| for i in range(start_i, end_i + 1) | |
| ] | |
| await asyncio.gather(*tasks) | |
| if __name__ == '__main__': | |
| # Run batch processing for questions 1-5 | |
| asyncio.run(_batch_run_gaia_task(1, 5)) | |
| ``` | |
| c. user curl | |
| ```shell | |
| curl http://localhost:9299/v1/chat/completions \ | |
| -H "Content-Type: application/json" \ | |
| -H "Authorization: Bearer 0p3n-w3bu!" \ | |
| -d '{ | |
| "model": "gaia_agent", | |
| "messages": [ | |
| { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "type": "text", | |
| "text": "5" | |
| } | |
| ] | |
| } | |
| ] | |
| }' | |
| ``` | |
| ## 🔑 Key Features | |
| - **Distributed Task Processing System** | |
| - Multi-server load balancing | |
| - Round-robin task distribution | |
| - Asynchronous task processing | |
| - **Docker Containerization** | |
| - Multi-instance deployment | |
| - Environment variable configuration | |
| - Auto-restart mechanism | |
| - **API Services** | |
| - FastAPI framework support | |
| - RESTful API design | |
| - Asynchronous request handling | |
| - **Development Tools** | |
| - Debug mode support | |
| - Batch task processing | |
| - Task state tracking | |
| - **Security Features** | |
| - API key authentication | |
| - Session management | |
| - User authentication | |
| ## 📦 Installation and Setup | |
| Get started with aworldserver in a few easy steps: | |
| 1. **Ensure Python 3.11 is installed.** | |
| 2. **Install the required dependencies:** | |
| ```sh | |
| pip install -r requirements-minimux.txt | |
| ``` | |
| 3. **Start the aworld server:** | |
| ```sh | |
| sh ./start.sh | |
| ``` | |
| ### Custom debug | |
| please run `debug_run.py` | |
| ## | |