Skip to main content

A simple AI toolkit for text processing using OpenAI and Gemini APIs

Project description

AIWand 🪄

One API to rule them all - Unified OpenAI and Gemini interface with automatic provider switching and structured data extraction from anywhere.

PyPI version Python versions License Coverage Status Downloads Downloads Downloads

🚀 Stop Wrestling with AI APIs

Before: Different APIs, manual JSON parsing, provider-specific code 😫
After: One API, automatic everything ✨

import aiwand
# Works with any model - provider auto-detected
response = aiwand.call_ai(model="gpt-4o", user_prompt="Explain quantum computing?")

# returns structured json data directly
data = aiwand.extract(content="John Doe, john@example.com, (555) 123-4567")

🔧 Installation & Setup

pip install aiwand
export OPENAI_API_KEY="your-key"     # Set either key (or both for fallback)
export GEMINI_API_KEY="your-key"     

💡 Core Features

call_ai - Universal AI Interface

Same code works with OpenAI and Gemini - automatic provider detection:

from pydantic import BaseModel

# Basic AI calls
response = aiwand.call_ai(model="gpt-4o", user_prompt="Explain quantum computing?")

# Structured output - get Pydantic objects directly
class BlogPost(BaseModel):
    title: str
    content: str
    tags: list[str]

blog = aiwand.call_ai(
    model="gemini-2.0-flash",
    user_prompt="Write a blog about AI",
    response_format=BlogPost    # Returns BlogPost object!
)
print(blog.title)  # Direct access, no JSON parsing

# Works with any model
for model in ["gpt-4o", "gemini-2.0-flash", "o3-mini"]:
    response = aiwand.call_ai(model=model, user_prompt=f"What makes {model} special?")

extract - Smart Data Extraction

Extract structured data from text, web links, documents, and images:

from pydantic import BaseModel

class CompanyInfo(BaseModel):
    name: str
    founded: int
    employees: int
    technologies: list[str]

# Extract from individual sources
contact = aiwand.extract(content="John Doe, john@example.com, (555) 123-4567")
webpage = aiwand.extract(links=["https://company.com/about"])
docs = aiwand.extract(document_links=["resume.pdf", "report.docx"])
images = aiwand.extract(images=["chart.png", "diagram.jpg"])

# Or mix all sources together with custom structure
company = aiwand.extract(
    content="Research notes about tech companies...", 
    links=["https://company.com/about"],           # Web pages
    document_links=["annual_report.pdf"],          # Documents  
    images=["company_chart.png"],                  # Images
    response_format=CompanyInfo                    # Get typed object back
)

print(f"{company.name} founded in {company.founded}")  # Direct access

⚡ Quick Examples

import aiwand

# Instant AI calls
summary = aiwand.summarize("Long article...", style="bullet-points")
response = aiwand.chat("What is machine learning?")
story = aiwand.generate_text("Write a haiku about coding")

# Smart classification  
grader = aiwand.create_binary_classifier(criteria="technical accuracy")
result = grader(question="What is 2+2?", answer="4", expected="4")
print(f"Accuracy: {result.score}/5")

🎨 CLI Magic

# Quick chat
aiwand "Explain quantum computing simply"

# Extract from anything
aiwand extract "Dr. Sarah Johnson, sarah@lab.com" --json
aiwand extract --links https://example.com --document-links resume.pdf --images chart.png

# Built-in functions
aiwand summarize "Long text..." --style concise
aiwand chat "Hello there!"

✨ Why Choose AIWand?

🔄 Provider Agnostic Same code, OpenAI or Gemini
🏗️ Structured Output Pydantic objects, no JSON parsing
🧠 Smart Detection Automatic provider selection
📄 Universal Extraction Text, web links, documents, images
Zero Setup Just add API keys
🎯 Drop-in Ready Minimal code changes

📚 Documentation

🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

📝 License

MIT License - see LICENSE file for details.


Star this repo if AIWand makes your AI development easier!

Made with ❤️ by Aman Kumar

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

aiwand-0.4.30.tar.gz (75.8 kB view details)

Uploaded Source

Built Distribution

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

aiwand-0.4.30-py3-none-any.whl (39.3 kB view details)

Uploaded Python 3

File details

Details for the file aiwand-0.4.30.tar.gz.

File metadata

  • Download URL: aiwand-0.4.30.tar.gz
  • Upload date:
  • Size: 75.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for aiwand-0.4.30.tar.gz
Algorithm Hash digest
SHA256 d7266de3a5c74cba591aeec4d22bb0dc6119d3ea523f4599b542332f9a0be6f9
MD5 619d0b6184d90a5c0a7127c93051da2a
BLAKE2b-256 13391dfa0856d2f2b53e729ec6efd96c8839fa6f44da8145c6e694d332cf5227

See more details on using hashes here.

File details

Details for the file aiwand-0.4.30-py3-none-any.whl.

File metadata

  • Download URL: aiwand-0.4.30-py3-none-any.whl
  • Upload date:
  • Size: 39.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for aiwand-0.4.30-py3-none-any.whl
Algorithm Hash digest
SHA256 af345363dc3bd628425986d3ee7eeb43739e9cc927ef8b2e95fae76ae8987858
MD5 4b6fd31ae2850902b46423eca37f4ba6
BLAKE2b-256 63372b4aadf7384d4b16068a2e2a20848e7bab821a903a90302b440bd105b7f8

See more details on using hashes here.

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