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.5.0.tar.gz (33.1 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.5.0-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for ai_search_match_framework-0.5.0.tar.gz
Algorithm Hash digest
SHA256 5b19861a50530160edf82350876f73b69c309659042936a40b33b30a3a7f02de
MD5 b19da454a348be25d5063852727b65e8
BLAKE2b-256 aced600dbec8ee388245c80d4fe2a8f884db1489f5a31e04a4f37517a9ea346e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ai_search_match_framework-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c824911fd1db8363eff5b2390ab9e51f01809a59885ad180ee421b490cf25b4
MD5 5441e90228e83dde5603b27f73561fb3
BLAKE2b-256 e2cebcdf81ab26df2d501cc11a1f108c405ced23c5a48e85c0126f942889e117

See more details on using hashes here.

Provenance

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