{"id":30740011,"url":"https://github.com/exposedcat/chat-member","last_synced_at":"2025-10-15T20:25:42.897Z","repository":{"id":308870334,"uuid":"1033465748","full_name":"ExposedCat/chat-member","owner":"ExposedCat","description":"Telegram Messenger AI Agent / Laylo v2","archived":false,"fork":false,"pushed_at":"2025-08-08T10:32:17.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-08T12:20:37.441Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ExposedCat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-06T21:25:47.000Z","updated_at":"2025-08-08T10:32:20.000Z","dependencies_parsed_at":"2025-08-08T12:20:43.782Z","dependency_job_id":"793e9b5e-da15-41ab-9df0-085cf3882577","html_url":"https://github.com/ExposedCat/chat-member","commit_stats":null,"previous_names":["exposedcat/chat-member"],"tags_count":null,"template":false,"template_full_name":"ExposedCat/ts-tg-bot","purl":"pkg:github/ExposedCat/chat-member","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExposedCat%2Fchat-member","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExposedCat%2Fchat-member/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExposedCat%2Fchat-member/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExposedCat%2Fchat-member/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ExposedCat","download_url":"https://codeload.github.com/ExposedCat/chat-member/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExposedCat%2Fchat-member/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273529542,"owners_count":25121827,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-09-03T23:47:11.020Z","updated_at":"2025-10-15T20:25:37.853Z","avatar_url":"https://github.com/ExposedCat.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Telegram AI Chat Member | Laylo v2\n\nThis project is a second experiment after\n[tg-local-llm](https://github.com/exposedcat/tg-local-llm) aimed at extending AI\nassistant possibilities and improving response quality by exposing messenger API\nto the agent rather than performing a complex response parsing and processing\nmanually.\n\n## Tools\n\n- `send_message(text)` sends a message in the chat\n- `search_messages(query, dateMin?, dateMax?)` performs a semantic search in the\n  chat\n- `finish()` signal to stop requesting any further agent actions\n\n## Deep Dive\n\n### Message Search\n\n**Message search** is meant to let agent efficiently find messages to handle\nuser requests such as search itself or selective chat summaries. Under the hood,\nmessage search is implemented in a simple flow:\n\n- Create an embedding for each message in a chat and store it in a\n  [Qdrant](https://qdrant.tech/) database\n- Provide agent with a tool to perform a vector search on a database by given\n  query. Internally, each request is scoped to a chat ID. Agent is allowed (but\n  not required to) set hard filters on message payloads, such as filtering\n  messages by date which can let it process requests such as summary of last 2\n  hours in the chat.\n\n## Tech\n\n- Written in TypeScript with [grammY](https://grammy.dev) Bot API framework\n- Using MongoDB for persistence\n- Using\n  [onnxruntime-node](https://onnxruntime.ai/docs/get-started/with-javascript/node.html)\n  and\n  [tokenizers](https://github.com/huggingface/tokenizers/tree/main/bindings/node)\n  for tokenization and embedding model invocation\n- Using [Qdrant](https://qdrant.tech/) to store embeddings\n- Using [Ollama](https://ollama.com/) for AI inference\n\n## Hardware \u0026 Models\n\n- Developed and tested on RX 6800 XT with 16G VRAM\n- Tested with [Qwen3 14B](https://ollama.com/library/qwen3:14b) as a main model\n- Tested with\n  [Multilingual E5 large instruct](https://huggingface.co/intfloat/multilingual-e5-large-instruct)\n  as embedding model\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexposedcat%2Fchat-member","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexposedcat%2Fchat-member","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexposedcat%2Fchat-member/lists"}