Skip to main content

AI-powered validation wrapper for Python requests library

Project description

🤖 requests-ai-validator

AI-powered REST API testing framework - drop-in replacement for requests with intelligent validation

Python 3.8+ License: MIT

🎯 What is it?

requests-ai-validator is a drop-in replacement for the popular requests library that adds AI-powered validation capabilities to your REST API tests. It uses Large Language Models (LLMs) to intelligently validate API responses, request-response consistency, and business logic.

Xnip Helper 2025-08-22 4 42 00 PM

✨ Key Features

  • 🔄 Drop-in replacement for requests - change only the import statement
  • 🤖 AI-powered validation - intelligent analysis of API interactions
  • 📊 Multiple AI providers - OpenAI, Anthropic, Ollama support
  • 🎯 Schema validation - Pydantic models, JSON Schema, OpenAPI support
  • 🌍 English feedback - clear and professional AI responses
  • 📋 Business rules - custom validation rules
  • 📊 Allure integration - detailed reporting
  • ⚙️ Environment configuration - easy setup via .env

🚀 Quick Start

Installation

pip install requests-ai-validator

Basic Usage

# Replace this line:
import requests

# With this line:
import requests_ai_validator as requests

# Use exactly like regular requests + AI validation:
from pydantic import BaseModel

class UserModel(BaseModel):
    id: int
    name: str
    email: str

# Regular request
response = requests.get("https://api.example.com/users/1")

# With AI validation - just add parameters!
response = requests.get(
    "https://api.example.com/users/1",
    ai_validation=True,
    ai_schema=UserModel,
    ai_rules=["User must exist and be valid"]
)
# If AI finds issues → test fails with detailed feedback

⚙️ Configuration

Environment Variables (.env)

# AI Configuration
AI_TOKEN=your-api-key-here
AI_PROVIDER=openai
AI_MODEL=gpt-3.5-turbo

Supported Providers

Provider Models API Key
OpenAI gpt-3.5-turbo, gpt-4, gpt-4-turbo, gpt-4o AI_TOKEN
Anthropic claude-3-haiku, claude-3-sonnet, claude-3-opus AI_TOKEN
Ollama llama2, codellama, mistral No API key (local)

Language

All AI feedback is provided in English for universal compatibility and clarity.

📖 Usage Examples

1. Simple GET Request

import requests_ai_validator as requests
from pydantic import BaseModel

class UserModel(BaseModel):
    id: int
    name: str
    email: str

# AI validation built into the request
response = requests.get(
    "https://api.example.com/users/1",
    ai_validation=True,
    ai_schema=UserModel
)

2. POST Request with Business Rules

response = requests.post(
    "https://api.example.com/users",
    json={"name": "John", "email": "john@example.com"},
    ai_validation=True,
    ai_schema=UserModel,
    ai_rules=[
        "User should be successfully created",
        "ID should be a positive number"
    ]
)

3. Session Usage

session = requests.Session(ai_provider="openai")

response = session.get(
    url,
    ai_validation=True,
    ai_schema=Model
)

4. Manual Configuration

# Override environment settings
requests.configure_global_ai(
    ai_provider="anthropic",
    api_key="your-claude-key",
    model="claude-3-sonnet"
)

🎯 AI Validation Categories

The AI validates 5 key areas:

Category Description Example
http_compliance HTTP protocol validation "Status code 200 correct for GET request"
request_validation Request payload validation "Request contains valid data: name, email"
response_structure Response format validation "Response has valid JSON structure"
schema_compliance Schema adherence "All required fields present in response"
data_consistency Request-response consistency "Common fields match: name, email"

❌ Error Handling

When AI validation fails, you get detailed feedback:

AssertionError:  AI validation failed: Schema validation issues found.
{'schema_compliance': "Missing required field 'missing_field' in response", 'data_consistency': 'Request field name does not match response'}

🔧 Advanced Usage

Positive vs Negative Tests

# Positive test - expect AI to find no issues
response = requests.get(url, ai_validation=True, expected_result=True)

# Negative test - expect AI to find issues  
response = requests.get(url, ai_validation=True, expected_result=False)

Custom AI Instructions

response = requests.post(
    url,
    json=data,
    ai_validation=True,
    ai_schema=Model,
    ai_rules=["Business rule 1", "Business rule 2"],
    ai_instructions=["Focus on data consistency", "Ignore performance"]
)

Manual AI Validation

# Get response first
response = requests.get(url)

# Then validate manually
validation_result = response.validate_with_ai(
    schema=Model,
    rules=["Custom rules"],
    expected_success=True
)

# Print detailed feedback (optional)
response.print_validation_details()

📊 Integration with Existing Code

Minimal Changes Required

# Before:
import requests
response = requests.get(url)
assert response.status_code == 200
return Model(**response.json())

# After:
import requests_ai_validator as requests  # Only this line changed
response = requests.get(url, ai_validation=True, ai_schema=Model)  # Added AI validation
assert response.status_code == 200
return Model(**response.json())

Framework Integration

Works seamlessly with popular testing frameworks:

  • pytest - automatic test failure on AI issues
  • Allure - detailed AI feedback in reports
  • unittest - standard assertions work
  • Custom frameworks - minimal integration effort

🔍 How It Works

  1. Make request - uses standard requests library
  2. AI analysis - sends request/response to LLM for validation
  3. Intelligent feedback - gets structured analysis of API interaction
  4. Test control - fails test if AI finds issues (configurable)

🎯 Benefits

  • 🧠 Intelligent validation - catches issues traditional testing misses
  • 🚀 Easy adoption - minimal code changes required
  • 🔍 Deep analysis - validates business logic, not just structure
  • 📊 Rich feedback - detailed explanations of issues found
  • Fast integration - works with existing test suites
  • 🌍 Multi-language - supports different feedback languages

📋 Requirements

  • Python 3.8+
  • requests library
  • pydantic for schema validation
  • AI provider API key (OpenAI, Anthropic) or local Ollama

🔗 Links

📄 License

MIT License - see LICENSE file for details.

🎨 Created with

This framework was created with Вайб кодинг - AI-powered development approach that combines human creativity with AI assistance to build elegant and powerful solutions.


Transform your API testing with AI intelligence! 🚀

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

requests_ai_validator-1.0.8.tar.gz (34.9 kB view details)

Uploaded Source

Built Distribution

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

requests_ai_validator-1.0.8-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file requests_ai_validator-1.0.8.tar.gz.

File metadata

  • Download URL: requests_ai_validator-1.0.8.tar.gz
  • Upload date:
  • Size: 34.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for requests_ai_validator-1.0.8.tar.gz
Algorithm Hash digest
SHA256 d5a40f3daab6675ea19e6dcf9dd931e031f2209d191cf0a1824dfdcd07c9dea4
MD5 cfd8f3a2db5d5f3fce490031c4ff568c
BLAKE2b-256 095145f7294d77d692afbad6d28fd6212d4601d9c9e1edba4b3dff8a7c28ced9

See more details on using hashes here.

Provenance

The following attestation bundles were made for requests_ai_validator-1.0.8.tar.gz:

Publisher: publish.yml on manikosto/requests-ai-validator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file requests_ai_validator-1.0.8-py3-none-any.whl.

File metadata

File hashes

Hashes for requests_ai_validator-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 6ee76ff97b33081a96ccefd98f5e95026d6a084196ac2539002ea250be44253b
MD5 4e00c9e0b040a1d0dce2fa46c8af9685
BLAKE2b-256 1457b43416413fabf5327f411bc762534340f8bd2b28c078e5d507b525143304

See more details on using hashes here.

Provenance

The following attestation bundles were made for requests_ai_validator-1.0.8-py3-none-any.whl:

Publisher: publish.yml on manikosto/requests-ai-validator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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