| |
| from llama_index.core.indices.base import BaseIndex |
| from llama_index.core.tools import QueryEngineTool, ToolMetadata |
| from llama_index.core.agent import ReActAgent |
| from llama_index.core import get_response_synthesizer |
| from typing import List, Tuple |
|
|
|
|
| def from_index(index: Tuple[str, BaseIndex]) -> Tuple[str, QueryEngineTool]: |
| """ |
| Optional response mode: |
| - refine: LLM call per node |
| - compact: less LLM call compare to refine |
| - tree_summarize: tree based summarization |
| - simple_summarize: summarize all chunks |
| - context_only: Returns a concatenated string of all text chunks. |
| - accumulate: Good for when you need to run the same query separately against each text chunk. |
| - compact accumulate: less LLM call accumulate |
| """ |
| index_name, vectorIndex = index |
| response_synthesizer = get_response_synthesizer(response_mode="compact") |
| query_engine = vectorIndex.as_query_engine(response_synthesizer=response_synthesizer, similiarity_top_k=3) |
| tool = QueryEngineTool( |
| query_engine=query_engine, |
| metadata=ToolMetadata( |
| name=index_name, |
| description=f"Useful for questions related to specific aspects of {index_name}" |
| ), |
| ) |
| return (index_name, tool) |
| |
| def from_agent(agent: ReActAgent) -> List[QueryEngineTool]: |
| tool = QueryEngineTool( |
| query_engine=agent, |
| metadata=ToolMetadata( |
| name="agent", |
| description="This is a agent specilized in the topic: agent" |
| ), |
| ) |
| return tool |
| |
| |