-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/agno-agi/agno into feat/sta…
…teless-models
- Loading branch information
Showing
5 changed files
with
96 additions
and
6 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
from typing import Optional | ||
|
||
from agno.agent import Agent | ||
from agno.embedder.openai import OpenAIEmbedder | ||
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase | ||
from agno.vectordb.qdrant import Qdrant | ||
from qdrant_client import QdrantClient | ||
|
||
# --------------------------------------------------------- | ||
# This section loads the knowledge base. Skip if your knowledge base was populated elsewhere. | ||
# Define the embedder | ||
embedder = OpenAIEmbedder(id="text-embedding-3-small") | ||
# Initialize vector database connection | ||
vector_db = Qdrant(collection="thai-recipes", path="tmp/qdrant", embedder=embedder) | ||
# Load the knowledge base | ||
knowledge_base = PDFUrlKnowledgeBase( | ||
urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"], | ||
vector_db=vector_db, | ||
) | ||
|
||
# Load the knowledge base | ||
# knowledge_base.load(recreate=True) # Comment out after first run | ||
# Knowledge base is now loaded | ||
# --------------------------------------------------------- | ||
|
||
|
||
# Define the custom retriever | ||
# This is the function that the agent will use to retrieve documents | ||
def retriever( | ||
query: str, agent: Optional[Agent] = None, num_documents: int = 5, **kwargs | ||
) -> Optional[list[dict]]: | ||
""" | ||
Custom retriever function to search the vector database for relevant documents. | ||
Args: | ||
query (str): The search query string | ||
agent (Agent): The agent instance making the query | ||
num_documents (int): Number of documents to retrieve (default: 5) | ||
**kwargs: Additional keyword arguments | ||
Returns: | ||
Optional[list[dict]]: List of retrieved documents or None if search fails | ||
""" | ||
try: | ||
qdrant_client = QdrantClient(path="tmp/qdrant") | ||
query_embedding = embedder.get_embedding(query) | ||
results = qdrant_client.query_points( | ||
collection_name="thai-recipes", | ||
query=query_embedding, | ||
limit=num_documents, | ||
) | ||
results_dict = results.model_dump() | ||
if "points" in results_dict: | ||
return results_dict["points"] | ||
else: | ||
return None | ||
except Exception as e: | ||
print(f"Error during vector database search: {str(e)}") | ||
return None | ||
|
||
|
||
def main(): | ||
"""Main function to demonstrate agent usage.""" | ||
# Initialize agent with custom retriever | ||
# Remember to set search_knowledge=True to use agentic_rag or add_reference=True for traditional RAG | ||
# search_knowledge=True is default when you add a knowledge base but is needed here | ||
agent = Agent( | ||
retriever=retriever, | ||
search_knowledge=True, | ||
instructions="Search the knowledge base for information", | ||
show_tool_calls=True, | ||
) | ||
|
||
# Example query | ||
query = "List down the ingredients to make Massaman Gai" | ||
agent.print_response(query, markdown=True) | ||
|
||
|
||
if __name__ == "__main__": | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters