docs: update project description and environment management in README
This commit is contained in:
commit
8c39084a31
237
README.md
Normal file
237
README.md
Normal file
@ -0,0 +1,237 @@
|
||||
# Agent Task Executor
|
||||
|
||||
A flexible task execution framework that uses LLMs (Large Language Models).
|
||||
|
||||
## Features
|
||||
|
||||
- Unique task identification
|
||||
- State tracking and monitoring
|
||||
- Checkpoint creation and rollback
|
||||
- Resource usage monitoring
|
||||
- Error handling and retry mechanism
|
||||
- Execution path tracking
|
||||
- Detailed status reporting
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
agent_task_executor/
|
||||
├── config/ # Configuration files and utilities
|
||||
│ ├── config_loader.py # Configuration loading utilities
|
||||
│ ├── llm_config.yaml # LLM configuration settings
|
||||
│ ├── secure_config.py # Secure configuration handling
|
||||
│ └── secure.json # Secure configuration data (encrypted)
|
||||
│
|
||||
├── tasksamples/ # Sample task implementations
|
||||
│ ├── __init__.py
|
||||
│ └── text_analysis_task.py # Text analysis task implementation
|
||||
│
|
||||
├── tests/ # Test suite
|
||||
│ ├── test_config.py # Configuration tests
|
||||
│ └── test_llm.py # LLM functionality tests
|
||||
│
|
||||
├── scripts/ # Utility scripts
|
||||
│
|
||||
├── llm_client.py # LLM API client implementation
|
||||
├── llm_executor.py # Core LLM execution logic
|
||||
├── task_executor.py # Task execution framework
|
||||
├── sample_task.py # Sample task demonstration
|
||||
│
|
||||
├── requirements.txt # Python dependencies
|
||||
├── pyproject.toml # Project metadata and build configuration
|
||||
└── .env.example # Example environment variables
|
||||
```
|
||||
|
||||
## Core Components
|
||||
|
||||
1. **Task Execution Framework**
|
||||
- `task_executor.py`: Core framework for task execution
|
||||
- `llm_executor.py`: LLM-specific execution logic
|
||||
- `llm_client.py`: Client for interacting with LLM APIs
|
||||
|
||||
2. **Configuration Management**
|
||||
- `config/`: Contains all configuration-related files
|
||||
- Secure configuration handling with encryption support
|
||||
- LLM-specific configurations
|
||||
|
||||
3. **Task Implementations**
|
||||
- `tasksamples/`: Directory for task implementations
|
||||
- Text analysis task with Chinese text support
|
||||
- Extensible for additional task types
|
||||
|
||||
4. **Testing**
|
||||
- Comprehensive test suite for configuration and LLM functionality
|
||||
- Unit tests for core components
|
||||
|
||||
## Setup and Dependencies
|
||||
|
||||
The project uses Python with the following key dependencies:
|
||||
- httpx: For making HTTP requests
|
||||
- tenacity: For retry logic
|
||||
- pyyaml: For configuration handling
|
||||
- cryptography: For secure configuration
|
||||
|
||||
## Environment Management
|
||||
|
||||
### Package Management with UV
|
||||
The project uses [uv](https://github.com/astral-sh/uv) for fast Python package management:
|
||||
|
||||
```bash
|
||||
# Install uv (if not already installed)
|
||||
pip install uv
|
||||
|
||||
# Create virtual environment and install dependencies
|
||||
uv venv
|
||||
uv pip install -r requirements.txt
|
||||
|
||||
# Activate virtual environment
|
||||
# On Windows:
|
||||
.venv\Scripts\activate
|
||||
# On Unix or MacOS:
|
||||
source .venv/bin/activate
|
||||
```
|
||||
|
||||
### Lock File
|
||||
The project uses `uv.lock` to ensure dependency consistency:
|
||||
- `uv.lock`: Contains exact versions of all dependencies
|
||||
- To update dependencies: `uv pip compile requirements.txt -o uv.lock`
|
||||
- To sync with lock file: `uv pip sync uv.lock`
|
||||
|
||||
### Environment Variables
|
||||
Required environment variables:
|
||||
- `DEEPSEEK_API_KEY`: API key for DeepSeek LLM service
|
||||
- `DEEPSEEK_API_BASE`: Base URL for DeepSeek API
|
||||
- `CONFIG_PATH`: Path to configuration directory (default: ./config)
|
||||
|
||||
Create a `.env` file in the project root:
|
||||
```bash
|
||||
DEEPSEEK_API_KEY=your_api_key_here
|
||||
DEEPSEEK_API_BASE=https://api.deepseek.com/v1
|
||||
CONFIG_PATH=./config
|
||||
```
|
||||
|
||||
### Configuration Files
|
||||
1. `llm_config.yaml`: LLM service configuration
|
||||
```yaml
|
||||
llm:
|
||||
provider: deepseek
|
||||
model: deepseek-chat
|
||||
temperature: 0.7
|
||||
max_tokens: 2000
|
||||
```
|
||||
|
||||
2. `secure.json`: Encrypted configuration for sensitive data
|
||||
- Generated and managed by `secure_config.py`
|
||||
- Uses encryption for storing API keys and secrets
|
||||
|
||||
## Usage
|
||||
|
||||
1. Install dependencies:
|
||||
```bash
|
||||
uv pip install -r requirements.txt
|
||||
```
|
||||
|
||||
2. Run the sample task:
|
||||
```bash
|
||||
python sample_task.py
|
||||
```
|
||||
|
||||
3. Create your own task executor:
|
||||
```python
|
||||
from task_executor import TaskExecutor
|
||||
|
||||
class CustomTaskExecutor(TaskExecutor):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
# Define your task steps
|
||||
|
||||
def validate_input(self, input_data):
|
||||
# Implement input validation
|
||||
pass
|
||||
|
||||
def execute_step(self, step_id, step_data):
|
||||
# Implement step execution
|
||||
pass
|
||||
```
|
||||
|
||||
## Task Execution Framework
|
||||
|
||||
### Core Components
|
||||
|
||||
1. Task Status Tracking
|
||||
- Unique task ID
|
||||
- Step-by-step progress monitoring
|
||||
- Resource usage tracking
|
||||
- Execution path recording
|
||||
|
||||
2. Checkpointing System
|
||||
- Automatic checkpoint creation every 5 steps
|
||||
- Rollback capability
|
||||
- State preservation
|
||||
|
||||
3. Error Handling
|
||||
- Maximum 3 retry attempts
|
||||
- Timeout monitoring (300 seconds)
|
||||
- Detailed error logging
|
||||
|
||||
4. Status Reporting
|
||||
- Real-time status updates
|
||||
- Resource usage statistics
|
||||
- Execution path history
|
||||
- Error and warning logs
|
||||
|
||||
### Status Output Format
|
||||
|
||||
```json
|
||||
{
|
||||
"task_id": "unique_id",
|
||||
"timestamp": "ISO-8601 timestamp",
|
||||
"current_step": {
|
||||
"id": "step_id",
|
||||
"name": "step_name",
|
||||
"status": "status",
|
||||
"progress": "percentage"
|
||||
},
|
||||
"checkpoints": ["checkpoint_list"],
|
||||
"resources": {
|
||||
"used": "used_resources",
|
||||
"available": "available_resources"
|
||||
},
|
||||
"execution_path": ["executed_steps"],
|
||||
"next_actions": ["possible_actions"]
|
||||
}
|
||||
```
|
||||
|
||||
### 密钥管理
|
||||
1. 创建了安全的配置管理系统:
|
||||
SecureConfig 类用于加密存储敏感信息
|
||||
使用 Fernet 对称加密
|
||||
适当的文件权限管理(Windows 和 Unix)
|
||||
2. 实现了配置加载器:
|
||||
从 YAML 文件加载基本配置
|
||||
从加密存储加载敏感信息
|
||||
支持环境变量覆盖
|
||||
3. 建立了清晰的配置优先级:
|
||||
API 密钥:环境变量 > 安全存储 > YAML 配置
|
||||
API 基础 URL:环境变量 > API 配置 > 提供商默认值
|
||||
4. 完成了全面的测试覆盖:
|
||||
安全配置的加密/解密
|
||||
文件权限测试
|
||||
配置优先级测试
|
||||
API 设置测试
|
||||
5. 添加了必要的依赖:
|
||||
cryptography 用于加密
|
||||
pywin32 用于 Windows 安全性
|
||||
PyYAML 用于配置文件
|
||||
6. 这个实现提供了:
|
||||
更好的安全性:敏感信息使用加密存储
|
||||
灵活性:多种配置方式和清晰的优先级
|
||||
跨平台支持:同时支持 Windows 和 Unix
|
||||
良好的测试覆盖
|
||||
|
||||
### 测试
|
||||
pytest tests/test_config.py -v
|
||||
|
||||
## License
|
||||
|
||||
MIT License
|
||||
Loading…
Reference in New Issue
Block a user