{"id":46227794,"url":"https://github.com/mafzaal/lets-talk","last_synced_at":"2026-03-03T16:59:33.721Z","repository":{"id":291881969,"uuid":"979096231","full_name":"mafzaal/lets-talk","owner":"mafzaal","description":"An open-source, AI-powered chat widget that brings RAG, tool use, and conversational AI directly to your readers. Transform passive browsing into interactive exploration.","archived":false,"fork":false,"pushed_at":"2026-02-09T02:40:54.000Z","size":4494,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-09T08:34:40.045Z","etag":null,"topics":["ai","docker","langchain","langgraph","python","qdrant","rag"],"latest_commit_sha":null,"homepage":"https://thedataguy.pro/lets-talk/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mafzaal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-07T01:52:07.000Z","updated_at":"2026-02-09T02:41:04.000Z","dependencies_parsed_at":"2025-05-23T04:02:21.805Z","dependency_job_id":"eba6eb10-16f3-4f77-bca5-932dcbf90283","html_url":"https://github.com/mafzaal/lets-talk","commit_stats":null,"previous_names":["mafzaal/lets-talk"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/mafzaal/lets-talk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mafzaal%2Flets-talk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mafzaal%2Flets-talk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mafzaal%2Flets-talk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mafzaal%2Flets-talk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mafzaal","download_url":"https://codeload.github.com/mafzaal/lets-talk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mafzaal%2Flets-talk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30052260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T15:26:47.567Z","status":"ssl_error","status_checked_at":"2026-03-03T15:26:17.132Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","docker","langchain","langgraph","python","qdrant","rag"],"created_at":"2026-03-03T16:59:31.313Z","updated_at":"2026-03-03T16:59:33.708Z","avatar_url":"https://github.com/mafzaal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\ntitle: Lets Talk\nemoji: 🌴\ncolorFrom: green\ncolorTo: blue\nsdk: docker\npinned: false\n---\n\n# Let’s Talk: Interactive AI Chat for Technical Blogs 🐨\n\nHave you ever wished you could ask follow-up questions while reading technical content? Meet **Let’s Talk** – an AI-driven chat component designed to make technical blog content more interactive and accessible.\n\n---\n\n## The Problem: Content Navigation Challenges\n\nTechnical blogs often present challenges for readers:\n\n- Difficulty finding specific information across multiple posts\n- Limited ability to explore topics in depth\n- One-way communication without follow-up capabilities\n- Reduced information retention\n\n## What Can You Do With Let’s Talk?\n\n- **Ask questions about blog topics** – Get concise answers about RAG systems, LLMs, and more\n- **Request code examples** – Receive practical code snippets for your use case\n- **Explore concepts deeper** – Get clarification without searching multiple articles\n- **Receive personalized guidance** – Information tailored to your background\n\n## Under the Hood: Technical Implementation\n\nLet’s Talk combines several AI technologies:\n\n- **Document Ingestion:** Supports ingesting documents from both the file system and websites\n- **Advanced Text Processing:** Utilizes recursive text splitting and semantic chunking for optimal context management\n- **Retrievers:** Includes BM25, multiple query retrievers, and semantic search for flexible information retrieval\n- **Advanced Embedding Technology:** Leverages powerful models like [Snowflake/snowflake-arctic-embed-l-v2.0](https://huggingface.co/Snowflake/snowflake-arctic-embed-l-v2.0) with flexible support for custom embedding models from any provider\n- **Vector Database:** Qdrant for efficient content indexing\n- **Language Models:** GPT-4o-mini for production, with GPT-4.1 for evaluation, plus support for integrating other LLMs and providers\n- **Orchestration:** LangChain and LangGraph for the complete RAG workflow\n- **Interface:** Custom Svelte component integrated with the blog's design\n\n## Try It For Yourself!\n\nLet's Talk is available in multiple implementations:\n\n- **Live on [TheDataGuy.PRO](https://thedataguy.pro/)** - Our initial implementation\n- **[D365 Stuff Chat](https://huggingface.co/spaces/mafzaal/d365stuff-chat)** - Powering the [D365 Stuff Blog](https://www.d365stuff.co/)\n- **[Hugging Face Spaces](https://huggingface.co/spaces/mafzaal/lets_talk)** - Try the prototype directly\n\nAsk questions about RAG evaluation, research agents, data strategy, or any other topics from my blog to see Let's Talk in action!\n\n## Pipeline Scheduling and Management 🕐\n\nLet's Talk now includes a comprehensive pipeline scheduling system built with FastAPI:\n\n- **Automated Content Updates:** Schedule regular pipeline runs to keep your content up-to-date\n- **Flexible Scheduling:** Support for cron expressions, intervals, and one-time runs\n- **REST API Management:** Full API for creating, monitoring, and managing scheduled jobs\n- **Real-time Monitoring:** Health checks, execution statistics, and error tracking\n- **Preset Configurations:** Common scheduling patterns (daily, weekly, hourly)\n\n### Quick Start with Pipeline Scheduling\n\n```bash\n# Start the FastAPI scheduler server\n./start_scheduler_api.sh\n\n# Or manually with uvicorn\ncd py-src \u0026\u0026 uv run uvicorn lets_talk.api.main:app --host 0.0.0.0 --port 8000\n\n# Alternative: Use the main entry point\ncd py-src \u0026\u0026 uv run python lets_talk/main.py\n```\n\nVisit `http://localhost:8000/docs` for the interactive API documentation.\n\nFor complete documentation, see [Pipeline Scheduling API Guide](docs/PIPELINE_SCHEDULING_API.md).\n\n## Architecture Overview 🏗️\n\nLet's Talk features a modular, layered architecture for maintainability and scalability:\n\n### Core Components\n\n- **`agents/`** - AI agent implementations (RAG, ReAct) with factory pattern\n- **`api/`** - FastAPI application with modular endpoints and Pydantic models\n- **`core/`** - Business logic (pipeline, scheduler, RAG retrieval, domain models)\n- **`tools/`** - External integrations and utilities (RSS, datetime, contact forms)\n- **`utils/`** - Helper functions (blog processing, document formatting)\n- **`shared/`** - Configuration, constants, exceptions, and prompt templates\n\n### Getting Started\n\n```bash\n# Install dependencies\nuv install\n\n# Set up database (auto-migrates on startup by default)\nexport DATABASE_URL=\"sqlite:///./output/lets_talk.db\"\n\n# Run the API server\ncd py-src \u0026\u0026 uv run python lets_talk/main.py\n\n# Run pipeline manually\ncd py-src \u0026\u0026 uv run python -m lets_talk.core.pipeline.engine\n\n# Use scheduler CLI\ncd py-src \u0026\u0026 uv run python -m lets_talk.core.scheduler.cli --help\n\n# Manage database migrations manually (if needed)\n./migrate.sh status\n./migrate.sh upgrade\n```\n\nFor detailed setup and configuration, see the [documentation](docs/).\n\n### Import Examples\n\n```python\n# Create agents\nfrom lets_talk.agents import create_rag_agent, create_react_agent\n\n# Access API\nfrom lets_talk.api.main import app\n\n# Use core components\nfrom lets_talk.core.pipeline.engine import run_pipeline\nfrom lets_talk.core.scheduler.manager import PipelineScheduler\nfrom lets_talk.shared.config import Configuration\n```\n\n## Future Enhancements\n\nPlanned improvements include:\n\n- Advanced reasoning capabilities\n- More immersive user experience with custom Svelte UI integration\n- Automated content updates\n- Expanded knowledge sources\n\n## Open Source and Available\n\nLet’s Talk is fully open source! You can find the code repository on [GitHub](https://github.com/mafzaal/lets-talk).\n\nIf you find this project useful:\n\n- ⭐ Star the repository to show your support\n- 🔄 Fork it to contribute your own improvements\n- 🔗 Share it with others who might benefit\n\nLooking to add a similar chat component to your technical blog or documentation? Feel free to reach out – I’m happy to assist with integration and customization for your specific needs.\n\n---\n\n## Conclusion\n\nLet’s Talk represents a shift from static content consumption to interactive knowledge exploration, creating a personalized learning experience for every reader.\n\nHave questions about Let’s Talk or suggestions for its improvement? Leave a comment via Let’s Talk or reach out directly. I’d love to hear your feedback!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmafzaal%2Flets-talk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmafzaal%2Flets-talk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmafzaal%2Flets-talk/lists"}