Агент с RAG-памятью: добавлен solution.py

This commit is contained in:
2026-05-25 16:06:06 +00:00
parent 79f981123b
commit cacc637b76
@@ -0,0 +1,14 @@
{"files":[{"filename":"solution.py","content":"# Агент с RAG-памятью\n# Используем LangChain и OpenAI API\n# Для работы требуется установить зависимости из requirements.txt\n\nimport os\nfrom
typing import List\n\n#
Пакеты из langchain\nfrom langchain.llms import OpenAI\nfrom
langchain.vectorstores import FAISS\nfrom
langchain.embeddings import OpenAIEmbeddings\nfrom
langchain.chains import RetrievalQA\nfrom
langchain.document_loaders import TextLoader\n\n#
Конфигурация\nOPENAI_API_KEY = os.getenv(\"OPENAI_API_KEY\")\nif not OPENAI_API_KEY:\n raise RuntimeError(\"Не задана переменная окружения OPENAI_API_KEY\")\n\n# Инициализация LLM\nllm = OpenAI(temperature=0.7, openai_api_key=OPENAI_API_KEY)\n\n# Векторное хранилище\n# Предполагается, что в каталоге data/ находятся текстовые файлы\nDATA_DIR = \"data\"\n\n# Функция загрузки документов\n
def load_documents(path:
str) -> List[str]:\n docs = []\n for filename in os.listdir(path):\n if filename.endswith(\".txt\"):\n loader = TextLoader(os.path.join(path, filename))\n docs.extend(loader.load_and_split())\n return docs\n\n# Создание векторного индекса\ndocuments = load_documents(DATA_DIR)\nembeddings = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)\nvector_store = FAISS.from_documents(documents, embeddings)\n\n# Создание цепочки RAG\nqa_chain = RetrievalQA.from_chain_type(\n llm=llm,\n chain_type=\"stuff\",\n retriever=vector_store.as_retriever(search_kwargs={\"k\": 5}),\n return_source_documents=True,\n)\n\n# Основная функция агента\n
def ask(question:
str) -> str:\n \"\"\"Возвращает ответ на вопрос, используя RAG.\"\"\"\n result = qa_chain(question)\n answer = result[\"result\"]\n sources = result.get(\"source_documents\", [])\n if sources:\n answer += \"\\n\\nИсточники:\\n\"\n for doc in sources:\n answer += f\"- {doc.metadata.get('source', 'неизвестно')}\\n\"\n return answer\n\n# Тестовый пример\n
if __name__ == \"__main__\":\n q = \"Что такое RAG?\"\n print(ask(q))\n"],"filename":"requirements.txt","content":"langchain\nopenai\nfaiss-cpu\n"},"filename":"README.md","content":"# Агент с RAG-памятью\n\n## Описание\nПростой пример агента, использующего Retrieval-Augmented Generation (RAG) для ответа на вопросы, опираясь на локальный набор текстовых файлов.\n\n## Установка\n```bash\npip install -r requirements.txt\n```\n\n## Запуск\n```bash\nexport OPENAI_API_KEY=ваш_ключ\npython solution.py\n```\n\n## Структура\n- `data/` – каталог с текстовыми файлами, которые будут использоваться как база знаний.\n- `solution.py` – основной скрипт.\n"}],"main_file":"solution.py"}