Update agent.py
This commit is contained in:
@@ -1,24 +1,56 @@
|
|||||||
from langchain import ChatPromptTemplate
|
from langchain_ollama import ChatOllama
|
||||||
|
from langchain.prompts import ChatPromptTemplate
|
||||||
from langchain.agents import create_agent
|
from langchain.agents import create_agent
|
||||||
from langchain.tools import tool
|
from langchain.tools import tool
|
||||||
from .tools import add_content, search_content
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
# LLM configuration – use Ollama via langchain-ollama
|
MODEL = os.getenv("OLLAMA_MODEL", "llama3")
|
||||||
MODEL = os.getenv("OLLAMA_MODEL", "llama3.1")
|
|
||||||
BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434/v1")
|
BASE_URL = os.getenv("OLLAMA_BASE_URL", "http://localhost:11434/v1")
|
||||||
|
|
||||||
from langchain_ollama import ChatOllama
|
# Initialize LLM with local Ollama endpoint.
|
||||||
llm = ChatOllama(model=MODEL, base_url=BASE_URL)
|
llm = ChatOllama(model=MODEL, base_url=BASE_URL)
|
||||||
|
|
||||||
# System prompt for the agent
|
|
||||||
SYSTEM_PROMPT = """You are an assistant that answers user queries using a knowledge base. Use the provided tools to search and add content."""
|
SYSTEM_PROMPT = """You are an assistant that answers user queries using a knowledge base. Use the provided tools to search and add content."""
|
||||||
prompt = ChatPromptTemplate.from_messages([
|
prompt = ChatPromptTemplate.from_messages([
|
||||||
("system", SYSTEM_PROMPT),
|
("system", SYSTEM_PROMPT),
|
||||||
])
|
])
|
||||||
|
|
||||||
tools = [add_content, search_content]
|
from .rag_tools import add_to_knowledge_base as rag_add, search_knowledge_base as rag_search
|
||||||
|
from .init_loader import load_documents
|
||||||
|
|
||||||
|
# Load existing documents from ./data directory at startup
|
||||||
|
load_documents("./data")
|
||||||
|
|
||||||
|
@tool
|
||||||
|
def add_to_knowledge_base(content: str, title: str = "Document") -> str:
|
||||||
|
"""Add content to the knowledge base."""
|
||||||
|
return rag_add(content=content, title=title)
|
||||||
|
|
||||||
|
@tool
|
||||||
|
def search_knowledge_base(query: str, max_results: int = 5) -> str:
|
||||||
|
"""Search the knowledge base for relevant chunks."""
|
||||||
|
results = rag_search(query=query, max_results=max_results)
|
||||||
|
formatted = "\n".join([f"{score:.4f}: {text[:200]}..." for text, score in results])
|
||||||
|
return formatted if formatted else "No results found."
|
||||||
|
|
||||||
|
tools = [add_to_knowledge_base, search_knowledge_base]
|
||||||
agent = create_agent(llm=llm, prompt=prompt, tools=tools)
|
agent = create_agent(llm=llm, prompt=prompt, tools=tools)
|
||||||
|
|
||||||
|
executor = agent
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print("Agent initialized.")
|
print("RAG Agent Interactive Mode. Type /quit to exit.")
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
user_input = input("User: ")
|
||||||
|
except (EOFError, KeyboardInterrupt):
|
||||||
|
print("\nGoodbye!")
|
||||||
|
break
|
||||||
|
if user_input.strip().lower() in {"/quit", "quit"}:
|
||||||
|
print("Goodbye!")
|
||||||
|
break
|
||||||
|
try:
|
||||||
|
response = executor.invoke({"input": user_input})
|
||||||
|
print("Assistant:", response)
|
||||||
|
except Exception as e:
|
||||||
|
print("Error:", str(e))
|
||||||
|
|||||||
Reference in New Issue
Block a user