Go to file
zhukang 7514326279 refactor: improve package structure
- Update import paths to use full package name
- Add package __init__.py
- Update pyproject.toml with correct dependencies and tools
- Configure pytest, black, and isort
2025-01-14 20:54:19 +08:00
config feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
scripts feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
tasksamples refactor: improve package structure 2025-01-14 20:54:19 +08:00
tests feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
__init__.py refactor: improve package structure 2025-01-14 20:54:19 +08:00
.env.example feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
.gitignore feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
llm_client.py feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
llm_executor.py feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
pyproject.toml refactor: improve package structure 2025-01-14 20:54:19 +08:00
README.md docs: update project description and environment management in README 2025-01-14 20:52:19 +08:00
requirements.txt feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
sample_task.py feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
task_executor.py feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00
uv.lock feat: initial commit of agent task executor framework 2025-01-14 20:53:09 +08:00

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 for fast Python package management:

# 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:

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

    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:
uv pip install -r requirements.txt
  1. Run the sample task:
python sample_task.py
  1. Create your own task executor:
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
  1. Checkpointing System
  • Automatic checkpoint creation every 5 steps
  • Rollback capability
  • State preservation
  1. Error Handling
  • Maximum 3 retry attempts
  • Timeout monitoring (300 seconds)
  • Detailed error logging
  1. Status Reporting
  • Real-time status updates
  • Resource usage statistics
  • Execution path history
  • Error and warning logs

Status Output Format

{
    "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