diff --git a/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/solution.py b/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/solution.py deleted file mode 100644 index c1c33c9..0000000 --- a/solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG-памятью/solution.py +++ /dev/null @@ -1,14 +0,0 @@ -{"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"} \ No newline at end of file