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.0.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.0-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for ai_search_match_framework-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e64479c7895a2ed486d1778237c670374f885a576e8b8f00dc97e1c0ece80b3e
MD5 e8ca5b76d24ec9f18f52ce22f7787fa6
BLAKE2b-256 7c60871a33c21de0c91ccdd0f8c5e7e153758f0e2c93f727f5f5f4938f5da5d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_search_match_framework-0.3.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ai_search_match_framework-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 67c5720269b38ec4c989c6d32dfb1740257cc4d0fa6352365b9d6ad0ae849b31
MD5 0c6df982087ec174acc760c85c1a9156
BLAKE2b-256 e0a237577c2f9d4e45d524f8ebcd27a2a5d77a842ffc17c15ea1274a64789dd4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_search_match_framework-0.3.0-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