Metadata-Version: 2.4
Name: ailocalconnection
Version: 0.1.1
Summary: Web search and RAG capabilities for local AI models.
Author: Mehosni
License: MIT
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: duckduckgo-search>=6.2.0
Requires-Dist: beautifulsoup4>=4.12.0
Requires-Dist: httpx>=0.27.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-httpx>=0.22.0; extra == "dev"
Requires-Dist: black>=22.0; extra == "dev"

# AILocalConnection 🌐

*Give your local AI models the power to browse the internet.*

AILocalConnection is a lightweight Python library that allows local Large Language Models (like Ollama, vLLM, LM Studio) to perform real-time web searches and use the internet as context to answer questions accurately. It acts as an instant Retrieval-Augmented Generation (RAG) agent.

## Features ✨

- **100% Free Search:** Uses DuckDuckGo under the hood. No API keys required.
- **Smart Scraping:** Fetches search results and scrapes the content of the pages, automatically removing ads, scripts, and navbars.
- **Graceful Fallback:** If a website blocks the scraper, it automatically falls back to the search engine's snippet.
- **AILocalMemory Integration:** Works flawlessly with `ailocalmemory` for a complete RAG + Chat History experience.

## Installation 📦

You can install AILocalConnection using pip:

```bash
pip install ailocalconnection
```

## Quick Start 🚀

### 1. Generating a Search Prompt

You can use AILocalConnection independently to just build the context prompt, then send it to any AI endpoint manually.

```python
from ailocalconnection import SearchAgent

agent = SearchAgent(max_results=3)

# Automatically searches the web, scrapes the top 3 links, 
# and builds a comprehensive context prompt.
prompt = agent.build_prompt("Who won the UEFA Euro 2024?")

print(prompt) 
```

### 2. Using with AILocalMemory (Recommended)

If you have `ailocalmemory` installed, you can combine internet searching with persistent chat history.

```python
from ailocalconnection import SearchAgent
from ailocalmemory import ChatSession, OllamaAdapter

agent = SearchAgent(max_results=2)

with ChatSession(session_id="user_123", storage="memory") as session:
    chat = OllamaAdapter(model="llama3", memory_session=session)
    
    query = "What is the current price of Bitcoin?"
    
    # 1. Search the web and build the RAG prompt
    augmented_prompt = agent.build_prompt(query)
    
    # 2. Send the augmented prompt to Ollama
    response_stream = chat.send(augmented_prompt, stream=True)
    
    for chunk in response_stream:
        print(chunk, end="", flush=True)
```
