Skip to main content

Lightweight framework for AI-powered document analysis and search workflows with multi-provider support

Project description

AI Search Match Framework (ASMF)

Lightweight Python framework for building AI-powered document analysis applications.

Clean abstractions for AI providers, document parsing, and custom analyzers. Build domain-specific tools like patent analyzers, grant finders, or contract reviewers.

Quick Start

pip install ai-search-match-framework
from asmf.providers import AIProviderFactory
from asmf.parsers import PDFPatentParser
from asmf.analyzers import BaseAnalyzer

# AI Provider with automatic fallback (Gemini → Ollama)
provider = AIProviderFactory.create_provider()
response = provider.analyze_text("Analyze this document...")

# Parse documents
parser = PDFPatentParser()
doc = parser.parse("document.pdf")

# Create custom analyzer
class MyAnalyzer(BaseAnalyzer):
    def analyze(self, data):
        return self.provider.analyze_text(f"Evaluate: {data}")

analyzer = MyAnalyzer(provider)
results = analyzer.batch_analyze([doc1, doc2])

Features

  • 🤖 Multi-provider AI - Unified interface for Gemini, Ollama with automatic fallback
  • 📄 Document parsing - Extract structured data from PDFs and other formats
  • 🔧 Extensible analyzers - Base classes for custom domain logic
  • 🔍 PR Review Webhook - Automated code review using Ollama with anti-pattern detection
  • 🎯 Type-safe - Full type hints for excellent IDE support
  • Well-tested - 78%+ coverage, production-ready
  • 🐳 Docker support - Containerized testing and deployment

Core Components

Component Purpose
providers AI provider interface (Gemini, Ollama) with failover
parsers Document parsing (PDF, etc.) with structured output
analyzers Base classes for domain-specific analysis logic
llm Task-specific model selection with VRAM detection
utils Configuration, logging, common utilities

Configuration

Quick Start with Ollama (Local, Free)

# 1. Install Ollama: https://ollama.ai/download
# 2. Pull a model
ollama pull qwen2.5:14b-q4

# 3. Configure ASMF
echo "OLLAMA_BASE_URL=http://localhost:11434" >> .env
echo "PREFER_LOCAL=true" >> .env

Or use the automated setup:

python scripts/setup_ollama.py

Cloud Provider Setup

Set environment variables:

GEMINI_API_KEY=your_key_here  # For Gemini
PREFER_LOCAL=false  # Cloud-first (default)

Advanced Configuration

# Local-first with fallback
from asmf.providers import AIProviderFactory
provider = AIProviderFactory.create_provider(prefer_local=True)

# Direct provider usage
from asmf.providers import GeminiProvider, OllamaProvider
gemini = GeminiProvider(api_key="...", model="gemini-1.5-pro")
ollama = OllamaProvider(model="qwen2.5:14b-q4", base_url="http://localhost:11434")

# Task-specific model selection (NEW!)
from asmf.llm import ModelSelector, TaskType
selector = ModelSelector()  # Auto-detects GPU
model = selector.select_model(TaskType.CODE_REVIEW)  # Best model for code review
ollama = OllamaProvider(model=model)

See docs/OLLAMA_SETUP.md for comprehensive Ollama setup guide and task-specific model recommendations.

Use Cases

Not a general LLM framework - Use LangChain/LlamaIndex for RAG/chatbots.
ASMF is for linear document analysis workflows:

  • ✅ Patent analysis and prior art search
  • ✅ Grant/RFP matching and evaluation
  • ✅ Contract review and risk assessment
  • ✅ Resume screening and candidate matching
  • ✅ Research paper analysis and summarization

Examples

See examples/job_finder/ for a complete application.

Documentation

Requirements

  • Python 3.10+
  • Dependencies: requests, beautifulsoup4, google-generativeai, httpx, pypdf, pdfplumber

License

MIT License - See LICENSE

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

AI Contributions: We track AI-generated commits with [AI] prefix for accessibility advocacy and productivity metrics. See commit conventions for details.


Why ASMF vs others?

Framework Focus Best For
ASMF Linear document analysis Domain-specific evaluation tools
LangChain RAG, agents, chains Chatbots, conversational AI
LlamaIndex Data indexing, retrieval Knowledge base search

Built with ❤️ using AI assistance (GitHub Copilot, Gemini, Ollama)

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

ai_search_match_framework-0.3.2.tar.gz (32.6 kB view details)

Uploaded Source

Built Distribution

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

ai_search_match_framework-0.3.2-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file ai_search_match_framework-0.3.2.tar.gz.

File metadata

File hashes

Hashes for ai_search_match_framework-0.3.2.tar.gz
Algorithm Hash digest
SHA256 d8d39ba83e3bed2848997bfb7a132bd7af0bca3f5a84b8872f460142e5c3929f
MD5 6917ff243858e331bb86a8117ca0bc4f
BLAKE2b-256 045d8edf2da4598f3f68c5adda65c5f59b572b43816cc6648ad5793c593f4a49

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_search_match_framework-0.3.2.tar.gz:

Publisher: publish.yml on vcaboara/ai-search-match-framework

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

File details

Details for the file ai_search_match_framework-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for ai_search_match_framework-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f911327795a8715a66886d0e644f7005715c7d29ba940fb0d2f1ef47fb151d68
MD5 8665517ff40c66d47f8cfee357cc8931
BLAKE2b-256 2158c8a278f6f92619297ac4130100f692cfdf71bc2c2cd7df11142736af02fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_search_match_framework-0.3.2-py3-none-any.whl:

Publisher: publish.yml on vcaboara/ai-search-match-framework

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