diff --git a/haiku_rag_slim/haiku/rag/agents/chat/agent.py b/haiku_rag_slim/haiku/rag/agents/chat/agent.py index d537935b..abb82b6d 100644 --- a/haiku_rag_slim/haiku/rag/agents/chat/agent.py +++ b/haiku_rag_slim/haiku/rag/agents/chat/agent.py @@ -15,6 +15,8 @@ from haiku.rag.agents.chat.state import ( ChatSessionState, QAResponse, build_document_filter, + build_multi_document_filter, + combine_filters, ) from haiku.rag.agents.research.dependencies import ResearchContext from haiku.rag.agents.research.graph import build_conversational_graph @@ -72,8 +74,18 @@ def create_chat_agent(config: AppConfig) -> Agent[ChatDeps, str]: document_name: Optional document name/title to search within limit: Number of results to return (default: 5) """ - # Build filter from document_name - doc_filter = build_document_filter(document_name) if document_name else None + # Build session filter from document_filter + session_filter = None + if ctx.deps.session_state and ctx.deps.session_state.document_filter: + session_filter = build_multi_document_filter( + ctx.deps.session_state.document_filter + ) + + # Build tool filter from document_name parameter + tool_filter = build_document_filter(document_name) if document_name else None + + # Combine filters: session AND tool + doc_filter = combine_filters(session_filter, tool_filter) # Use search agent for query expansion and deduplication search_agent = SearchAgent(ctx.deps.client, ctx.deps.config) @@ -111,6 +123,9 @@ def create_chat_agent(config: AppConfig) -> Agent[ChatDeps, str]: session_context=get_cached_session_context(session_id) if session_id else None, + document_filter=( + ctx.deps.session_state.document_filter if ctx.deps.session_state else [] + ), ) # Return detailed results for the agent to present @@ -158,8 +173,18 @@ def create_chat_agent(config: AppConfig) -> Agent[ChatDeps, str]: question: The question to answer document_name: Optional document name/title to search within (e.g., "tbmed593", "army manual") """ - # Build filter from document_name - doc_filter = build_document_filter(document_name) if document_name else None + # Build session filter from document_filter + session_filter = None + if ctx.deps.session_state and ctx.deps.session_state.document_filter: + session_filter = build_multi_document_filter( + ctx.deps.session_state.document_filter + ) + + # Build tool filter from document_name parameter + tool_filter = build_document_filter(document_name) if document_name else None + + # Combine filters: session AND tool + doc_filter = combine_filters(session_filter, tool_filter) # Build and run the conversational research graph graph = build_conversational_graph(config=ctx.deps.config) @@ -245,6 +270,9 @@ def create_chat_agent(config: AppConfig) -> Agent[ChatDeps, str]: session_context=get_cached_session_context(session_id) if session_id else None, + document_filter=( + ctx.deps.session_state.document_filter if ctx.deps.session_state else [] + ), ) # Format answer with citation references and confidence diff --git a/tests/agents/chat/test_chat_agent.py b/tests/agents/chat/test_chat_agent.py index 79f0275d..d3b6aeb0 100644 --- a/tests/agents/chat/test_chat_agent.py +++ b/tests/agents/chat/test_chat_agent.py @@ -583,3 +583,97 @@ def test_fifo_limit_enforcement(): assert session_state.qa_history[0].question == "Question 1" # The last entry should be the last added question assert session_state.qa_history[-1].question == f"Question {MAX_QA_HISTORY}" + + +def test_chat_session_state_document_filter(): + """Test ChatSessionState with document_filter.""" + state = ChatSessionState( + session_id="test-filter", + document_filter=["doc1.pdf", "doc2.pdf"], + ) + assert state.document_filter == ["doc1.pdf", "doc2.pdf"] + + +def test_chat_session_state_document_filter_default_empty(): + """Test ChatSessionState document_filter defaults to empty list.""" + state = ChatSessionState(session_id="test") + assert state.document_filter == [] + + +@pytest.mark.asyncio +@pytest.mark.vcr() +async def test_chat_agent_search_with_session_filter( + allow_model_requests, temp_db_path +): + """Test that session document_filter restricts search results.""" + async with HaikuRAG(temp_db_path, create=True) as client: + # Add two distinct documents + await client.create_document( + content=DOCLAYNET_CLASS_LABELS, + uri="doclaynet-labels", + title="DocLayNet Class Labels", + ) + await client.create_document( + content=DOCLAYNET_DATA_SOURCES, + uri="doclaynet-sources", + title="DocLayNet Sources", + ) + + agent = create_chat_agent(Config) + # Set session filter to only include the labels document + session_state = ChatSessionState( + session_id="test-session-filter", + document_filter=["DocLayNet Class Labels"], + ) + deps = ChatDeps( + client=client, + config=Config, + session_state=session_state, + ) + + # Search should only return results from the filtered document + result = await agent.run( + "Search for information about DocLayNet", + deps=deps, + ) + + assert result.output is not None + # Results should only reference the Labels document, not Sources + assert "Labels" in result.output or "class" in result.output.lower() + + +@pytest.mark.asyncio +@pytest.mark.vcr() +async def test_search_agent_with_session_filter(allow_model_requests, temp_db_path): + """Test SearchAgent respects session document filter.""" + async with HaikuRAG(temp_db_path, create=True) as client: + # Add two distinct documents + await client.create_document( + content=DOCLAYNET_CLASS_LABELS, + uri="doclaynet-labels", + title="DocLayNet Class Labels", + ) + await client.create_document( + content=DOCLAYNET_DATA_SOURCES, + uri="doclaynet-sources", + title="DocLayNet Sources", + ) + + from haiku.rag.agents.chat.state import build_multi_document_filter + + search_agent = SearchAgent(client, Config) + + # Build filter for only the labels document + doc_filter = build_multi_document_filter(["DocLayNet Class Labels"]) + + results = await search_agent.search( + query="What information is available?", + filter=doc_filter, + ) + + assert isinstance(results, list) + # All results should be from the labels document + for r in results: + assert "labels" in (r.document_uri or "").lower() or "Labels" in ( + r.document_title or "" + ) diff --git a/tests/cassettes/test_chat_agent/test_chat_agent_search_with_session_filter.yaml b/tests/cassettes/test_chat_agent/test_chat_agent_search_with_session_filter.yaml new file mode 100644 index 00000000..d857ad22 --- /dev/null +++ b/tests/cassettes/test_chat_agent/test_chat_agent_search_with_session_filter.yaml @@ -0,0 +1,991 @@ +interactions: +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '730' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + encoding_format: base64 + input: + - |- + DocLayNet Dataset - Class Labels + DocLayNet defines 11 distinct class labels for document layout analysis: + 1. Caption - Text describing figures or tables + 2. Footnote - Notes at the bottom of pages + 3. Formula - Mathematical expressions + 4. List-item - Items in bulleted or numbered lists + 5. Page-footer - Footer content on pages + 6. Page-header - Header content on pages + 7. Picture - Images and diagrams + 8. Section-header - Headings for document sections + 9. Table - Tabular data + 10. Text - Regular paragraph text (highest count: 510,377 instances) + 11. Title - Document titles + The Text class has the highest count with 510,377 instances in the dataset. + model: qwen3-embedding:4b + uri: http://localhost:11434/v1/embeddings + response: + headers: + content-type: + - application/json + transfer-encoding: + - chunked + parsed_body: + data: + - embedding: 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 + index: 0 + object: embedding + model: qwen3-embedding:4b + object: list + usage: + prompt_tokens: 166 + total_tokens: 166 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '412' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + encoding_format: base64 + input: + - |- + DocLayNet Dataset - Data Sources + The data sources for DocLayNet include: + - Publication repositories such as arXiv + - Government offices and official documents + - Company websites and corporate reports + - Data directory services for financial reports + - Patent documents + Scanned documents were excluded to avoid rotation and skewing issues. + model: qwen3-embedding:4b + uri: http://localhost:11434/v1/embeddings + response: + headers: + content-type: + - application/json + transfer-encoding: + - chunked + parsed_body: + data: + - embedding: 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 + index: 0 + object: embedding + model: qwen3-embedding:4b + object: list + usage: + prompt_tokens: 68 + total_tokens: 68 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '4080' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + messages: + - content: |- + You are a helpful research assistant powered by haiku.rag, a knowledge base system. + + You have access to a knowledge base of documents. Use your tools to search and answer questions. + + CRITICAL RULES: + 1. For greetings or casual chat: respond directly WITHOUT using any tools + 2. For questions: Use the "ask" tool EXACTLY ONCE - it handles query expansion internally + 3. For searches: Use the "search" tool EXACTLY ONCE - it handles multi-query expansion internally + 4. NEVER call the same tool multiple times for a single user message + 5. NEVER make up information - always use tools to get facts from the knowledge base + + How to decide which tool to use: + - "get_document" - Use when the user references a SPECIFIC document by name, title, or URI (e.g., "summarize document X", "get the paper about Y", "fetch 2412.00566"). Retrieves the full document content. + - "ask" - Use for general questions about topics in the knowledge base when no specific document is named. It searches across all documents and returns answers with citations. + - "search" - Use when the user explicitly asks to search/find/explore documents. Call it ONCE. After calling search, copy the ENTIRE tool response to your output INCLUDING the content snippets. Do NOT shorten, summarize, or omit any part of the results. + + IMPORTANT - When user mentions a document in search/ask: + - If user says "search in ", "find in ", "answer from ", or " in ": + - Extract the TOPIC as `query`/`question` + - Extract the DOCUMENT NAME as `document_name` + - Examples for search: + - "search for embeddings in the ML paper" → query="embeddings", document_name="ML paper" + - "find transformer architecture in 2412.00566" → query="transformer architecture", document_name="2412.00566" + - Examples for ask: + - "what does the ML paper say about embeddings?" → question="what are the embedding methods?", document_name="ML paper" + - "answer from 2412.00566 about model training" → question="how is the model trained?", document_name="2412.00566" + + Be friendly and conversational. When you use the "ask" tool, summarize the key findings for the user. + role: system + - content: Search for information about DocLayNet + role: user + model: gpt-oss + reasoning_effort: low + stream: false + tool_choice: auto + tools: + - function: + description: |- + Search the knowledge base for relevant documents. + + Use this when you need to find documents or explore the knowledge base. + Results are displayed to the user - just list the titles found. + name: search + parameters: + additionalProperties: false + properties: + document_name: + anyOf: + - type: string + - type: 'null' + default: null + description: Optional document name/title to search within + limit: + anyOf: + - type: integer + - type: 'null' + default: null + description: 'Number of results to return (default: 5)' + query: + description: The search query (what to search for) + type: string + required: + - query + type: object + type: function + - function: + description: |- + Answer a specific question using the knowledge base. + + Use this for direct questions that need a focused answer with citations. + Uses a research graph for planning, searching, and synthesis. + name: ask + parameters: + additionalProperties: false + properties: + document_name: + anyOf: + - type: string + - type: 'null' + default: null + description: Optional document name/title to search within (e.g., "tbmed593", "army manual") + question: + description: The question to answer + type: string + required: + - question + type: object + type: function + - function: + description: |- + Retrieve a specific document by title or URI. + + Use this when the user wants to fetch/get/retrieve a specific document. + name: get_document + parameters: + additionalProperties: false + properties: + query: + description: The document title or URI to look up + type: string + required: + - query + type: object + strict: true + type: function + uri: http://localhost:11434/v1/chat/completions + response: + headers: + content-length: + - '510' + content-type: + - application/json + parsed_body: + choices: + - finish_reason: tool_calls + index: 0 + message: + content: '' + reasoning: We need to use search tool once. + role: assistant + tool_calls: + - function: + arguments: '{"document_name":null,"limit":null,"query":"DocLayNet"}' + name: search + id: call_kigykl4f + index: 0 + type: function + created: 1769422570 + id: chatcmpl-378 + model: gpt-oss + object: chat.completion + system_fingerprint: fp_ollama + usage: + completion_tokens: 42 + prompt_tokens: 844 + total_tokens: 886 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1056' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + messages: + - content: |- + You are a search query optimizer. You MUST use the run_search tool to execute searches. + + For each user request: + 1. Use the run_search tool with the original query + 2. Use run_search again with 1-2 alternative keyword queries + 3. Keep all queries SHORT (2-5 words) + 4. After all tool calls complete, respond "Search complete" + + You can optionally specify a limit parameter (default 5). + + IMPORTANT: You must make actual tool calls. Do not output "run_search(...)" as text. + role: system + - content: DocLayNet + role: user + model: gpt-oss + reasoning_effort: low + stream: false + tool_choice: auto + tools: + - function: + description: Run a single search query against the knowledge base. + name: run_search + parameters: + additionalProperties: false + properties: + limit: + anyOf: + - type: integer + - type: 'null' + default: null + description: 'Number of results to fetch (default: 5)' + query: + description: The search query + type: string + required: + - query + type: object + type: function + uri: http://localhost:11434/v1/chat/completions + response: + headers: + content-length: + - '486' + content-type: + - application/json + parsed_body: + choices: + - finish_reason: tool_calls + index: 0 + message: + content: '' + reasoning: We need to run search queries. + role: assistant + tool_calls: + - function: + arguments: '{"query":"DocLayNet","limit":5}' + name: run_search + id: call_oy17s17j + index: 0 + type: function + created: 1769422571 + id: chatcmpl-423 + model: gpt-oss + object: chat.completion + system_fingerprint: fp_ollama + usage: + completion_tokens: 37 + prompt_tokens: 264 + total_tokens: 301 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '79' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + encoding_format: base64 + input: + - DocLayNet + model: qwen3-embedding:4b + uri: http://localhost:11434/v1/embeddings + response: + headers: + content-type: + - application/json + transfer-encoding: + - chunked + parsed_body: + data: + - embedding: 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 + index: 0 + object: embedding + model: qwen3-embedding:4b + object: list + usage: + prompt_tokens: 5 + total_tokens: 5 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1370' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + messages: + - content: |- + You are a search query optimizer. You MUST use the run_search tool to execute searches. + + For each user request: + 1. Use the run_search tool with the original query + 2. Use run_search again with 1-2 alternative keyword queries + 3. Keep all queries SHORT (2-5 words) + 4. After all tool calls complete, respond "Search complete" + + You can optionally specify a limit parameter (default 5). + + IMPORTANT: You must make actual tool calls. Do not output "run_search(...)" as text. + role: system + - content: DocLayNet + role: user + - content: |- + + We need to run search queries. + + role: assistant + tool_calls: + - function: + arguments: '{"query":"DocLayNet","limit":5}' + name: run_search + id: call_oy17s17j + type: function + - content: 'Found 1 results for: DocLayNet' + role: tool + tool_call_id: call_oy17s17j + model: gpt-oss + reasoning_effort: low + stream: false + tool_choice: auto + tools: + - function: + description: Run a single search query against the knowledge base. + name: run_search + parameters: + additionalProperties: false + properties: + limit: + anyOf: + - type: integer + - type: 'null' + default: null + description: 'Number of results to fetch (default: 5)' + query: + description: The search query + type: string + required: + - query + type: object + type: function + uri: http://localhost:11434/v1/chat/completions + response: + headers: + content-length: + - '518' + content-type: + - application/json + parsed_body: + choices: + - finish_reason: tool_calls + index: 0 + message: + content: '' + reasoning: Now alternative keyword queries 1-2 short 2-5 words. + role: assistant + tool_calls: + - function: + arguments: '{"limit":5,"query":"DocLayNet framework"}' + name: run_search + id: call_bcxnqy9f + index: 0 + type: function + created: 1769422572 + id: chatcmpl-729 + model: gpt-oss + object: chat.completion + system_fingerprint: fp_ollama + usage: + completion_tokens: 46 + prompt_tokens: 327 + total_tokens: 373 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '89' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + encoding_format: base64 + input: + - DocLayNet framework + model: qwen3-embedding:4b + uri: http://localhost:11434/v1/embeddings + response: + headers: + content-type: + - application/json + transfer-encoding: + - chunked + parsed_body: + data: + - embedding: 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 + index: 0 + object: embedding + model: qwen3-embedding:4b + object: list + usage: + prompt_tokens: 6 + total_tokens: 6 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1726' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + messages: + - content: |- + You are a search query optimizer. You MUST use the run_search tool to execute searches. + + For each user request: + 1. Use the run_search tool with the original query + 2. Use run_search again with 1-2 alternative keyword queries + 3. Keep all queries SHORT (2-5 words) + 4. After all tool calls complete, respond "Search complete" + + You can optionally specify a limit parameter (default 5). + + IMPORTANT: You must make actual tool calls. Do not output "run_search(...)" as text. + role: system + - content: DocLayNet + role: user + - content: |- + + We need to run search queries. + + role: assistant + tool_calls: + - function: + arguments: '{"query":"DocLayNet","limit":5}' + name: run_search + id: call_oy17s17j + type: function + - content: 'Found 1 results for: DocLayNet' + role: tool + tool_call_id: call_oy17s17j + - content: |- + + Now alternative keyword queries 1-2 short 2-5 words. + + role: assistant + tool_calls: + - function: + arguments: '{"limit":5,"query":"DocLayNet framework"}' + name: run_search + id: call_bcxnqy9f + type: function + - content: 'Found 1 results for: DocLayNet framework' + role: tool + tool_call_id: call_bcxnqy9f + model: gpt-oss + reasoning_effort: low + stream: false + tool_choice: auto + tools: + - function: + description: Run a single search query against the knowledge base. + name: run_search + parameters: + additionalProperties: false + properties: + limit: + anyOf: + - type: integer + - type: 'null' + default: null + description: 'Number of results to fetch (default: 5)' + query: + description: The search query + type: string + required: + - query + type: object + type: function + uri: http://localhost:11434/v1/chat/completions + response: + headers: + content-length: + - '505' + content-type: + - application/json + parsed_body: + choices: + - finish_reason: tool_calls + index: 0 + message: + content: |- + + Second alternative + + role: assistant + tool_calls: + - function: + arguments: '{"limit":5,"query":"DocLayNet project"}' + name: run_search + id: call_jjajlkoc + index: 0 + type: function + created: 1769422573 + id: chatcmpl-19 + model: gpt-oss + object: chat.completion + system_fingerprint: fp_ollama + usage: + completion_tokens: 40 + prompt_tokens: 400 + total_tokens: 440 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '87' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + encoding_format: base64 + input: + - DocLayNet project + model: qwen3-embedding:4b + uri: http://localhost:11434/v1/embeddings + response: + headers: + content-type: + - application/json + transfer-encoding: + - chunked + parsed_body: + data: + - embedding: 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 + index: 0 + object: embedding + model: qwen3-embedding:4b + object: list + usage: + prompt_tokens: 6 + total_tokens: 6 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '2048' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + messages: + - content: |- + You are a search query optimizer. You MUST use the run_search tool to execute searches. + + For each user request: + 1. Use the run_search tool with the original query + 2. Use run_search again with 1-2 alternative keyword queries + 3. Keep all queries SHORT (2-5 words) + 4. After all tool calls complete, respond "Search complete" + + You can optionally specify a limit parameter (default 5). + + IMPORTANT: You must make actual tool calls. Do not output "run_search(...)" as text. + role: system + - content: DocLayNet + role: user + - content: |- + + We need to run search queries. + + role: assistant + tool_calls: + - function: + arguments: '{"query":"DocLayNet","limit":5}' + name: run_search + id: call_oy17s17j + type: function + - content: 'Found 1 results for: DocLayNet' + role: tool + tool_call_id: call_oy17s17j + - content: |- + + Now alternative keyword queries 1-2 short 2-5 words. + + role: assistant + tool_calls: + - function: + arguments: '{"limit":5,"query":"DocLayNet framework"}' + name: run_search + id: call_bcxnqy9f + type: function + - content: 'Found 1 results for: DocLayNet framework' + role: tool + tool_call_id: call_bcxnqy9f + - content: |- + + + Second alternative + + + role: assistant + tool_calls: + - function: + arguments: '{"limit":5,"query":"DocLayNet project"}' + name: run_search + id: call_jjajlkoc + type: function + - content: 'Found 1 results for: DocLayNet project' + role: tool + tool_call_id: call_jjajlkoc + model: gpt-oss + reasoning_effort: low + stream: false + tool_choice: auto + tools: + - function: + description: Run a single search query against the knowledge base. + name: run_search + parameters: + additionalProperties: false + properties: + limit: + anyOf: + - type: integer + - type: 'null' + default: null + description: 'Number of results to fetch (default: 5)' + query: + description: The search query + type: string + required: + - query + type: object + type: function + uri: http://localhost:11434/v1/chat/completions + response: + headers: + content-length: + - '298' + content-type: + - application/json + parsed_body: + choices: + - finish_reason: stop + index: 0 + message: + content: Search complete + role: assistant + created: 1769422573 + id: chatcmpl-907 + model: gpt-oss + object: chat.completion + system_fingerprint: fp_ollama + usage: + completion_tokens: 6 + prompt_tokens: 461 + total_tokens: 467 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '4747' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + messages: + - content: |- + You are a helpful research assistant powered by haiku.rag, a knowledge base system. + + You have access to a knowledge base of documents. Use your tools to search and answer questions. + + CRITICAL RULES: + 1. For greetings or casual chat: respond directly WITHOUT using any tools + 2. For questions: Use the "ask" tool EXACTLY ONCE - it handles query expansion internally + 3. For searches: Use the "search" tool EXACTLY ONCE - it handles multi-query expansion internally + 4. NEVER call the same tool multiple times for a single user message + 5. NEVER make up information - always use tools to get facts from the knowledge base + + How to decide which tool to use: + - "get_document" - Use when the user references a SPECIFIC document by name, title, or URI (e.g., "summarize document X", "get the paper about Y", "fetch 2412.00566"). Retrieves the full document content. + - "ask" - Use for general questions about topics in the knowledge base when no specific document is named. It searches across all documents and returns answers with citations. + - "search" - Use when the user explicitly asks to search/find/explore documents. Call it ONCE. After calling search, copy the ENTIRE tool response to your output INCLUDING the content snippets. Do NOT shorten, summarize, or omit any part of the results. + + IMPORTANT - When user mentions a document in search/ask: + - If user says "search in ", "find in ", "answer from ", or " in ": + - Extract the TOPIC as `query`/`question` + - Extract the DOCUMENT NAME as `document_name` + - Examples for search: + - "search for embeddings in the ML paper" → query="embeddings", document_name="ML paper" + - "find transformer architecture in 2412.00566" → query="transformer architecture", document_name="2412.00566" + - Examples for ask: + - "what does the ML paper say about embeddings?" → question="what are the embedding methods?", document_name="ML paper" + - "answer from 2412.00566 about model training" → question="how is the model trained?", document_name="2412.00566" + + Be friendly and conversational. When you use the "ask" tool, summarize the key findings for the user. + role: system + - content: Search for information about DocLayNet + role: user + - content: |- + + We need to use search tool once. + + role: assistant + tool_calls: + - function: + arguments: '{"document_name":null,"limit":null,"query":"DocLayNet"}' + name: search + id: call_kigykl4f + type: function + - content: |- + Found 1 results: + + [1] **DocLayNet Class Labels** + DocLayNet defines 11 distinct class labels for document layout analysis: Caption - Text describing figures or tables Footnote - Notes at the bottom of pages Formula - Mathematical expressions List-item - Items in bulleted or numbered lists Page-footer - Footer content on pages Page-header - He... + role: tool + tool_call_id: call_kigykl4f + model: gpt-oss + reasoning_effort: low + stream: false + tool_choice: auto + tools: + - function: + description: |- + Search the knowledge base for relevant documents. + + Use this when you need to find documents or explore the knowledge base. + Results are displayed to the user - just list the titles found. + name: search + parameters: + additionalProperties: false + properties: + document_name: + anyOf: + - type: string + - type: 'null' + default: null + description: Optional document name/title to search within + limit: + anyOf: + - type: integer + - type: 'null' + default: null + description: 'Number of results to return (default: 5)' + query: + description: The search query (what to search for) + type: string + required: + - query + type: object + type: function + - function: + description: |- + Answer a specific question using the knowledge base. + + Use this for direct questions that need a focused answer with citations. + Uses a research graph for planning, searching, and synthesis. + name: ask + parameters: + additionalProperties: false + properties: + document_name: + anyOf: + - type: string + - type: 'null' + default: null + description: Optional document name/title to search within (e.g., "tbmed593", "army manual") + question: + description: The question to answer + type: string + required: + - question + type: object + type: function + - function: + description: |- + Retrieve a specific document by title or URI. + + Use this when the user wants to fetch/get/retrieve a specific document. + name: get_document + parameters: + additionalProperties: false + properties: + query: + description: The document title or URI to look up + type: string + required: + - query + type: object + strict: true + type: function + uri: http://localhost:11434/v1/chat/completions + response: + headers: + content-length: + - '666' + content-type: + - application/json + parsed_body: + choices: + - finish_reason: stop + index: 0 + message: + content: "Here are the documents I found related to DocLayNet:\n\n**[1] DocLayNet Class Labels** \nDocLayNet defines + 11 distinct class labels for document layout analysis: Caption, Footnote, Formula, List‑item, Page‑footer, Page‑header, + Paragraph, Reference, Table, Title, and Figure. \n\nLet me know if you’d like to dive into any of these details + or explore more related content!" + role: assistant + created: 1769422576 + id: chatcmpl-491 + model: gpt-oss + object: chat.completion + system_fingerprint: fp_ollama + usage: + completion_tokens: 92 + prompt_tokens: 980 + total_tokens: 1072 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/cassettes/test_chat_agent/test_search_agent_with_session_filter.yaml b/tests/cassettes/test_chat_agent/test_search_agent_with_session_filter.yaml new file mode 100644 index 00000000..48fabd81 --- /dev/null +++ b/tests/cassettes/test_chat_agent/test_search_agent_with_session_filter.yaml @@ -0,0 +1,484 @@ +interactions: +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '730' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + encoding_format: base64 + input: + - |- + DocLayNet Dataset - Class Labels + DocLayNet defines 11 distinct class labels for document layout analysis: + 1. Caption - Text describing figures or tables + 2. Footnote - Notes at the bottom of pages + 3. Formula - Mathematical expressions + 4. List-item - Items in bulleted or numbered lists + 5. Page-footer - Footer content on pages + 6. Page-header - Header content on pages + 7. Picture - Images and diagrams + 8. Section-header - Headings for document sections + 9. Table - Tabular data + 10. Text - Regular paragraph text (highest count: 510,377 instances) + 11. Title - Document titles + The Text class has the highest count with 510,377 instances in the dataset. + model: qwen3-embedding:4b + uri: http://localhost:11434/v1/embeddings + response: + headers: + content-type: + - application/json + transfer-encoding: + - chunked + parsed_body: + data: + - embedding: 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 + index: 0 + object: embedding + model: qwen3-embedding:4b + object: list + usage: + prompt_tokens: 166 + total_tokens: 166 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '412' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + encoding_format: base64 + input: + - |- + DocLayNet Dataset - Data Sources + The data sources for DocLayNet include: + - Publication repositories such as arXiv + - Government offices and official documents + - Company websites and corporate reports + - Data directory services for financial reports + - Patent documents + Scanned documents were excluded to avoid rotation and skewing issues. + model: qwen3-embedding:4b + uri: http://localhost:11434/v1/embeddings + response: + headers: + content-type: + - application/json + transfer-encoding: + - chunked + parsed_body: + data: + - embedding: 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 + index: 0 + object: embedding + model: qwen3-embedding:4b + object: list + usage: + prompt_tokens: 68 + total_tokens: 68 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1077' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + messages: + - content: |- + You are a search query optimizer. You MUST use the run_search tool to execute searches. + + For each user request: + 1. Use the run_search tool with the original query + 2. Use run_search again with 1-2 alternative keyword queries + 3. Keep all queries SHORT (2-5 words) + 4. After all tool calls complete, respond "Search complete" + + You can optionally specify a limit parameter (default 5). + + IMPORTANT: You must make actual tool calls. Do not output "run_search(...)" as text. + role: system + - content: What information is available? + role: user + model: gpt-oss + reasoning_effort: low + stream: false + tool_choice: auto + tools: + - function: + description: Run a single search query against the knowledge base. + name: run_search + parameters: + additionalProperties: false + properties: + limit: + anyOf: + - type: integer + - type: 'null' + default: null + description: 'Number of results to fetch (default: 5)' + query: + description: The search query + type: string + required: + - query + type: object + type: function + uri: http://localhost:11434/v1/chat/completions + response: + headers: + content-length: + - '491' + content-type: + - application/json + parsed_body: + choices: + - finish_reason: tool_calls + index: 0 + message: + content: '' + reasoning: Need to search. + role: assistant + tool_calls: + - function: + arguments: '{"query":"What information is available","limit":5}' + name: run_search + id: call_29szfwau + index: 0 + type: function + created: 1769422580 + id: chatcmpl-287 + model: gpt-oss + object: chat.completion + system_fingerprint: fp_ollama + usage: + completion_tokens: 35 + prompt_tokens: 266 + total_tokens: 301 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '99' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + encoding_format: base64 + input: + - What information is available + model: qwen3-embedding:4b + uri: http://localhost:11434/v1/embeddings + response: + headers: + content-type: + - application/json + transfer-encoding: + - chunked + parsed_body: + data: + - embedding: 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 + index: 0 + object: embedding + model: qwen3-embedding:4b + object: list + usage: + prompt_tokens: 5 + total_tokens: 5 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1416' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + messages: + - content: |- + You are a search query optimizer. You MUST use the run_search tool to execute searches. + + For each user request: + 1. Use the run_search tool with the original query + 2. Use run_search again with 1-2 alternative keyword queries + 3. Keep all queries SHORT (2-5 words) + 4. After all tool calls complete, respond "Search complete" + + You can optionally specify a limit parameter (default 5). + + IMPORTANT: You must make actual tool calls. Do not output "run_search(...)" as text. + role: system + - content: What information is available? + role: user + - content: |- + + Need to search. + + role: assistant + tool_calls: + - function: + arguments: '{"query":"What information is available","limit":5}' + name: run_search + id: call_29szfwau + type: function + - content: 'Found 1 results for: What information is available' + role: tool + tool_call_id: call_29szfwau + model: gpt-oss + reasoning_effort: low + stream: false + tool_choice: auto + tools: + - function: + description: Run a single search query against the knowledge base. + name: run_search + parameters: + additionalProperties: false + properties: + limit: + anyOf: + - type: integer + - type: 'null' + default: null + description: 'Number of results to fetch (default: 5)' + query: + description: The search query + type: string + required: + - query + type: object + type: function + uri: http://localhost:11434/v1/chat/completions + response: + headers: + content-length: + - '453' + content-type: + - application/json + parsed_body: + choices: + - finish_reason: tool_calls + index: 0 + message: + content: '' + role: assistant + tool_calls: + - function: + arguments: '{"limit":5,"query":"available information"}' + name: run_search + id: call_jt1klhks + index: 0 + type: function + created: 1769422580 + id: chatcmpl-672 + model: gpt-oss + object: chat.completion + system_fingerprint: fp_ollama + usage: + completion_tokens: 23 + prompt_tokens: 328 + total_tokens: 351 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '91' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + encoding_format: base64 + input: + - available information + model: qwen3-embedding:4b + uri: http://localhost:11434/v1/embeddings + response: + headers: + content-type: + - application/json + transfer-encoding: + - chunked + parsed_body: + data: + - embedding: 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 + index: 0 + object: embedding + model: qwen3-embedding:4b + object: list + usage: + prompt_tokens: 3 + total_tokens: 3 + status: + code: 200 + message: OK +- request: + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate, zstd + connection: + - keep-alive + content-length: + - '1707' + content-type: + - application/json + host: + - localhost:11434 + method: POST + parsed_body: + messages: + - content: |- + You are a search query optimizer. You MUST use the run_search tool to execute searches. + + For each user request: + 1. Use the run_search tool with the original query + 2. Use run_search again with 1-2 alternative keyword queries + 3. Keep all queries SHORT (2-5 words) + 4. After all tool calls complete, respond "Search complete" + + You can optionally specify a limit parameter (default 5). + + IMPORTANT: You must make actual tool calls. Do not output "run_search(...)" as text. + role: system + - content: What information is available? + role: user + - content: |- + + Need to search. + + role: assistant + tool_calls: + - function: + arguments: '{"query":"What information is available","limit":5}' + name: run_search + id: call_29szfwau + type: function + - content: 'Found 1 results for: What information is available' + role: tool + tool_call_id: call_29szfwau + - content: null + role: assistant + tool_calls: + - function: + arguments: '{"limit":5,"query":"available information"}' + name: run_search + id: call_jt1klhks + type: function + - content: 'Found 1 results for: available information' + role: tool + tool_call_id: call_jt1klhks + model: gpt-oss + reasoning_effort: low + stream: false + tool_choice: auto + tools: + - function: + description: Run a single search query against the knowledge base. + name: run_search + parameters: + additionalProperties: false + properties: + limit: + anyOf: + - type: integer + - type: 'null' + default: null + description: 'Number of results to fetch (default: 5)' + query: + description: The search query + type: string + required: + - query + type: object + type: function + uri: http://localhost:11434/v1/chat/completions + response: + headers: + content-length: + - '298' + content-type: + - application/json + parsed_body: + choices: + - finish_reason: stop + index: 0 + message: + content: Search complete + role: assistant + created: 1769422581 + id: chatcmpl-633 + model: gpt-oss + object: chat.completion + system_fingerprint: fp_ollama + usage: + completion_tokens: 6 + prompt_tokens: 370 + total_tokens: 376 + status: + code: 200 + message: OK +version: 1