'''Collection of HTML elements for Gradio interface.''' TITLE = ( '''

RASS (retrieval augmented simple syndication) Agent

Agentic RSS feed reader

''' ) DESCRIPTION = ( '''

Problem: I love RSS feeds, but need help keeping up with all of the content from my subscriptions. Solution: Build a tool to allow LLMs to find and interact with RSS feeds on behalf of the user.

Introduction

This demonstration uses sister space RSS feed reader via MCP to interact with RSS feeds. Click 'Connect to MCP server' to get started. If it takes a minute or two to reply, don't worry the inference container was probably cold and spinning up. Check out the main project repo on GitHub. Both Spaces by George Perdrizet.

I love RSS feeds - they remind me of a time when the internet was a weird and wonderful place, filled with interesting content hiding behind every link. The tools to produce and navigate that content have improved by leaps and bounds. However, the improvement has not come without some losses. Content often feels homogeneous and it is too often painfully apparent that your favorite platform has a large degree of control over what content you see and what content you don't. This tool give the user back some of that control. It let's them decide what content and sources they are interested in. I built it because I want access to diverse, unfiltered publishing by many sources, paired modern AI to help me navigate it. I want the model to help me ingest my feed, not create it for me! ''' ) FEATURES_TOOLS =''' ## Features 1. Inference with Anthropic's efficient claude-3-haiku model. 2. Custom MCP client with asynchronous server side events, retry and error handling based on the excellent repo by [Adel Zaalouk](https://github.com/zanetworker/mcp-playground/tree/main). 3. Multi-turn re-prompting to allow LLM workflows with multiple tool calls. 4. Queue and worker system to show user what's going on 'under the hood' while the model calls tools and generates replies. ## Tools 1. `get_feed()`: Given a website name or URL, find its RSS feed and return recent article titles, links and a generated summary of content if avalible. Caches results for fast retrieval by other tools. Embeds content to vector database for subsequent RAG. 2. `context_search()`: Vector search on article content for RAG context. 3. `find_article()`: Uses vector search on article content to find title of article that user is referring to. 4. `get_summary()`: Gets article summary from Redis cache using article title. 5. `get_link()`: Gets article link from Redis cache using article title. '''