Обновить solutions/6a02e23da6fe2e4ac16acf65_Агент_с_RAG_памятью/rag_agent.py

This commit is contained in:
2026-05-27 07:02:40 +00:00
parent a7c4e53bff
commit d0f750b21e
@@ -1,4 +1,4 @@
<|channel|>final code<|message|>import os import os
from pathlib import Path from pathlib import Path
from typing import List from typing import List
@@ -8,6 +8,7 @@ from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain.tools import tool from langchain.tools import tool
from langchain.agents import create_agent, AgentExecutor from langchain.agents import create_agent, AgentExecutor
from langchain.schema import Document from langchain.schema import Document
from rag_tools import search_knowledge_base, add_to_knowledge_base
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# 1. Векторное хранилище на базе Qdrant # 1. Векторное хранилище на базе Qdrant
@@ -86,28 +87,27 @@ def add_to_knowledge_base(content: str, title: str) -> str:
# 4. Создание агента # 4. Создание агента
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
llm = OllamaLLM(model="llama3") LLM_MODEL = "llama3"
llm = OllamaLLM(model=LLM_MODEL)
agent_executor: AgentExecutor
def init_agent() -> None:
"""
Инициализирует агент с системным промптом, указывающим использовать RAG.
"""
global agent_executor
system_prompt = (
"Ты AI-ассистент. При необходимости ищи информацию в базе знаний "
"с помощью инструмента search_knowledge_base и добавляй новые данные "
"через add_to_knowledge_base."
)
tools = [search_knowledge_base, add_to_knowledge_base] tools = [search_knowledge_base, add_to_knowledge_base]
agent_executor = create_agent(
llm=llm, prompt = PromptTemplate.from_template(
tools=tools, "Вы — интеллектуальный агент с доступом к базе знаний.\n"
system_prompt=system_prompt, "Используйте инструменты 'search_knowledge_base' и 'add_to_knowledge_base' при необходимости.\n\n"
verbose=True "Доступные инструменты:\n{tools}\n\n"
"Формат ответа:\n"
"Question: {input}\n"
"Thought: {agent_scratchpad}\n"
"Action: действие из [{tool_names}]\n"
"Action Input: входные данные\n"
"Observation: результат\n"
"Final Answer: итоговый ответ"
) )
agent = create_react_agent(llm=llm, tools=tools, prompt=prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #
# 5. Инициализация из директории (для загрузки файлов) # 5. Инициализация из директории (для загрузки файлов)
# --------------------------------------------------------------------------- # # --------------------------------------------------------------------------- #