From a4d4f6f6b70a86b9c95897f383d9e0563bb46ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D0=B8=D0=BD=D0=B0=D1=80=20=D0=9C=D0=B8=D1=80=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D0=B8=D1=82=D0=BE=D0=B2?= Date: Wed, 10 Jun 2026 13:30:09 +0000 Subject: [PATCH] =?UTF-8?q?Initial=20submission=20of=20FAQ-=D0=B1=D0=BE?= =?UTF-8?q?=D1=82:=20add=20src/agent.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agent.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/agent.py diff --git a/src/agent.py b/src/agent.py new file mode 100644 index 0000000..01f5ec3 --- /dev/null +++ b/src/agent.py @@ -0,0 +1,37 @@ +import os +from langchain.agents import initialize_agent, Tool +from langchain.llms import Ollama +from langchain.chains import RetrievalQA +from langchain_ollama import OllamaEmbeddings +from langchain_chroma import Chroma +from src.utils import search_course_docs +from src.mcp_tool import fetch_course_meta, start_meta_server + +# Start mock server +start_meta_server() + +# Define tools +search_tool = Tool( + name="search_course_docs", + func=lambda q: "\n".join([doc.page_content for doc in search_course_docs(q, k=3)]), + description="Search local FAQ documents. Use when question is about course content." +) + +meta_tool = Tool( + name="fetch_course_meta", + func=lambda q: str(fetch_course_meta(q)), + description="Get course metadata like schedule or instructor. Use when question is about schedule or meta." +) + +# LLM and agent +llm = Ollama(model="llama3.1") +agent = initialize_agent([search_tool, meta_tool], llm, agent_type="zero-shot-react-description", verbose=True) + +if __name__ == "__main__": + print("FAQ-бот готов. Введите вопрос (или 'exit'): ") + while True: + q = input("> ") + if q.lower() in {"exit", "quit"}: + break + response = agent.run(q) + print(response)