From 428a559ee91c5cf1bd5c9c1e89bec7229eaee3d3 Mon Sep 17 00:00:00 2001 From: frayle-ons <194791647+frayle-ons@users.noreply.github.com> Date: Mon, 19 Jan 2026 17:51:11 +0000 Subject: [PATCH 1/5] added GcpAgent for classifcation and genai base classes --- DEMO/genAI_prototype.ipynb | 262 +++++++++++++++++++++++++++++++ src/classifai/agents/__init__.py | 7 + src/classifai/agents/base.py | 19 +++ src/classifai/agents/gcp.py | 200 +++++++++++++++++++++++ src/classifai/indexers/main.py | 15 ++ 5 files changed, 503 insertions(+) create mode 100644 DEMO/genAI_prototype.ipynb create mode 100644 src/classifai/agents/__init__.py create mode 100644 src/classifai/agents/base.py create mode 100644 src/classifai/agents/gcp.py diff --git a/DEMO/genAI_prototype.ipynb b/DEMO/genAI_prototype.ipynb new file mode 100644 index 0000000..d0cb569 --- /dev/null +++ b/DEMO/genAI_prototype.ipynb @@ -0,0 +1,262 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# GEN AI Workflow Notebook ✨✨" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ClassifAI allows users to create vector databases from text datasets, search those vector datasets in an ad-hoc retrieval manner, and deploy this pipeline as a restAPI service using FastAPI to perform AI assisted classification tasks.\n", + "\n", + "\n", + "An recent emergent AI field is Retrieval Augmented Generation (RAG) where text generation models that traditionally respond to a user 'prompt', first retrieve relevant infomration from a vector database via adhoc retrieval processes, and use those serach results as context to generate an answer for the original user prompt.\n", + "\n", + "#### This notebook shows how we use RAG agents to perform classification on our VectorStore semantic search results!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ClassifAIs existing retrieval setup\n", + "\n", + "![Server_Image](files/servers.png)\n", + "\n", + "#### The other modules of ClassifAI provide 3 core classes that work together to:\n", + "\n", + "1. Vectorisers, to create embeddings,\n", + "2. Vectorstores, to create datgabsees of vectors and the ability to searc/query those database\n", + "3. RestAPI, to deploy a rest api service on a server to allow connections that search the created vector databases" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!uv pip install \"classifai[gcp]\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "We need to first set up a traditional ClassifAI pipeline that can provide search/classification results for our generative model to use as context...\n", + "\n", + "\n", + "All of the following code is part of our standard ClassifAI setupm, and is a short demo of how you can create a semantic search classification system. Check out our general_workflow_demo.ipynb notebook for a walkthrough of the content of these cells!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!gcloud auth application-default login" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classifai.indexers import VectorStore\n", + "from classifai.vectorisers import HuggingFaceVectoriser\n", + "\n", + "# Our embedding model is pulled down from HuggingFace, or used straight away if previously downloaded\n", + "# This also works with many different huggingface models!\n", + "vectoriser = HuggingFaceVectoriser(model_name=\"sentence-transformers/all-MiniLM-L6-v2\")\n", + "\n", + "\n", + "my_vector_store = VectorStore(\n", + " file_name=\"./data/fake_soc_dataset.csv\", # demo csv file from the classifai package repo! (try some of our other DEMO/data datasets)\n", + " data_type=\"csv\",\n", + " vectoriser=vectoriser,\n", + " agent=None,\n", + " overwrite=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## We've set up our semantic search classification system\n", + "\n", + "The following cell runs the 'search' method of the vectorstore, which will take a query for our created vectorstore and return the top k (n_results) most similar samples stored in the vectorstore. This is an example of our exisiting retrieval capabilities with the ClassifAI package. \n", + "\n", + "This retrieved set can then be used to make a final classification decision, by some method such as:\n", + "- automatically choosing the top ranked item, \n", + "- a human in the loop physically looking at the retrieved candidates making the decision,\n", + "- by using a generative AI agent to assess the candidate lists and making a final decison... more on that later" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classifai.indexers.dataclasses import VectorStoreSearchInput\n", + "\n", + "input_object = VectorStoreSearchInput(\n", + " {\"id\": [1, 2], \"query\": [\"dairy famer that sells milk\", \"happy construction worker\"]}\n", + ")\n", + "\n", + "bb = my_vector_store.search(input_object, n_results=5)\n", + "bb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating an AI Agent\n", + "\n", + "With our semantic search classification pipeline set up, we can send the top K results (seen above) to a Genereative AI model and ask that LLM to make a final decision on which result is the correct result for the user's original input query. Passing semantic search results to a generatieve model for some task is often referred to as 'Retrieval Augmented Generation'.\n", + "\n", + "\n", + "![Rag_Image](files/agent.png) \n", + "\n", + "\n", + "Our `GcpAgent` class agent has a transform() method which accepts a `VectorStoreSearchOutput` object. Passing this `VectorStoreSearchOutput` object to the transform() method will return another `VectorStoreSearchOutput` object, which will modify the results in some way. The classificaion GcpAgent, reduces the semantic search results down to a single result row for each query in the VectorStoreSearchOutput results.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To instantiate the GcpAgent, the constructor takes:\n", + "\n", + "- project_id - of the google project associated with the Google Gemini embedding models\n", + "- location - corresponding to the Gcloud Project\n", + "- model_name - the specific LLM model to use, that is avaiable on Gcloud\n", + "- task_type - indicates the kind of work you want the LLM to do on the ClassifAI results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classifai.agents import GcpAgent\n", + "\n", + "my_agent = GcpAgent(\n", + " project_id=\"platforms-sandbox\", location=\"europe-west2\", model_name=\"gemini-2.5-flash\", task_type=\"classification\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can pass some VectorStore search results directly to the agents transform() method" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "semantic_search_results = my_vector_store.search(input_object, n_results=5)\n", + "\n", + "print(type(semantic_search_results))\n", + "semantic_search_results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### To use the If the classification agent can make a decision, it will return a single row for the corresponding query_id. Otherwise it will return the original results\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_agent.transform(semantic_search_results)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### To use the agent in our ClassifAI pipeline, we can attach it to the running VectorStore" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_vector_store.agent = my_agent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### We can then run vectorstore.search and it will automatically call the agent to process the results!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "my_vector_store.search(input_object, n_results=5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Thats it!\n", + "\n", + "You can see in the above cell that my_agent.transform() takes and returns a VectorStoreSearchOutput object and therefore integrates with the VectorStore search method.\n", + "\n", + "Check out the general_worfklow notebook to see how VectorStores can be deployed, and you'll find that the Agent can be deployed as an integrated part of the VectorStore." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/classifai/agents/__init__.py b/src/classifai/agents/__init__.py new file mode 100644 index 0000000..f354377 --- /dev/null +++ b/src/classifai/agents/__init__.py @@ -0,0 +1,7 @@ +from .base import GeneratorBase +from .gcp import GcpAgent + +__all__ = [ + "GcpAgent", + "GeneratorBase", +] diff --git a/src/classifai/agents/base.py b/src/classifai/agents/base.py new file mode 100644 index 0000000..3c9e1c4 --- /dev/null +++ b/src/classifai/agents/base.py @@ -0,0 +1,19 @@ +from abc import ABC, abstractmethod + +from classifai.indexers.dataclasses import VectorStoreSearchOutput + +## +# The following is the abstract base class for all RAG generative models. +## + + +class GeneratorBase(ABC): + """Abstract base class for all Generative RAG models.""" + + @abstractmethod + def transform( + self, + results: VectorStoreSearchOutput, + ) -> VectorStoreSearchOutput: + """Passes prompt(s) to the generator and returns the generated text(s) and RAG ranking.""" + pass diff --git a/src/classifai/agents/gcp.py b/src/classifai/agents/gcp.py new file mode 100644 index 0000000..f005d64 --- /dev/null +++ b/src/classifai/agents/gcp.py @@ -0,0 +1,200 @@ +import json + +import pandas as pd +from google import genai +from google.genai.types import GenerateContentConfig, HttpOptions +from pydantic import BaseModel, Field + +from classifai.indexers.dataclasses import VectorStoreSearchOutput + +from .base import GeneratorBase + +######################## +#### SYSTEM PROMPTS FOR DIFFERENT TASK TYPES: currently, Classification or Summarization. +######################## + +CLASSIFICATION_SYSTEM_PROMPT = """You are an AI assistant designed to classify a user query based on the provided context. You will be provided with 5 candidate entries retrieved from a knowledge base, each containing an ID and a text description. Your task is to analyze the user query and the text of the context entries to determine which of the entries best matches the user query. + +Guidelines: +1. Always prioritize the provided context when making your classification. +2. The context will be provided as an XML structure containing multiple entries. Each entry includes an ID and a text description. +3. The IDs will be integer values from 0 to 4, corresponding to the 5 candidate entries. +4. Use the text of the entries to determine the most relevant classification for the user query. +5. Your output must be a JSON object that adheres to the following schema: + - The JSON object must contain a single key, `classification`. + - The value of `classification` must be an integer between 0 and 4, representing the ID of the best matching entry. + - If no classification can be determined due to ambiguity or insufficient information, the value of `classification` must be `-1`. + +Example of the required JSON output: +{ + "classification": 1 +} + +The XML structure for the context and user query will be as follows: + + + 0 + [Text from the first entry] + + + 1 + [Text from the second entry] + + ... + + 4 + [Text from the fifth entry] + + + + + [The user query will be inserted here] + + +Your task is to analyze the context and the user query, and return the classification in the required structured format.""" + + +######################## +#### GENERAL FUNCTION FOR FORMATTING THE USER QUERY PROMPT WITH RETRIEVED RESULTS FROM VECTORSTORE +######################## + + +def format_prompt_with_retrieval_results(df: pd.DataFrame) -> str: + """Generates a formatted XML prompt for the generative model from a structured DataFrame. + + Args: + df (pd.DataFrame): A DataFrame containing columns as per `searchOutputSchema`. + + Returns: + str: The formatted XML prompt. + """ + # Extract the user query (assuming all rows have the same query_id and query_text) + user_query = df["query_text"].iloc[0] + + # Limit to the top 5 entries based on rank + top_entries = df.nsmallest(5, "rank") + + # Build the section + context_entries = "\n".join( + f" \n {idx}\n {row['doc_text']}\n " + for idx, row in top_entries.iterrows() + ) + + # Combine everything into the final prompt + formatted_prompt = f""" + +{context_entries} + + + + {user_query} +""" + + return formatted_prompt + + +######################## +#### SYSTEM PROMPTS FOR DIFFERENT TASK TYPES: Classification +######################## + + +class ClassificationResponseModel(BaseModel): + classification: int = Field(description="Chosen ID of the best matching entry.", ge=-1) + + +######################## +#### FORMATTING FUNCTIONS THAT INTERPRET THE MODEL RAW RESPONSE, FORMATS, and APPLIES TO DF +######################## + + +def format_classification_output(generated_text, result: VectorStoreSearchOutput) -> VectorStoreSearchOutput: + # Parse the generated text + try: + response = json.loads(generated_text) + validated_response = ClassificationResponseModel(**response) + except (json.JSONDecodeError, ValueError): + # If parsing or validation fails, return the original DataFrame + return result + + # Extract the classification + classification = validated_response.classification + + # Validate the classification value is in the expected range + MIN_INDEX = 0 + MAX_INDEX = 4 + if int(classification) < MIN_INDEX or int(classification) > MAX_INDEX: + return result + + # Otherwise, filter to only keep the row with the classified doc_id + result = result.iloc[[classification]].reset_index(drop=True) + + return VectorStoreSearchOutput(result) + + +######################## +#### ACTUAL AGENT CODE +######################## + + +class GcpAgent(GeneratorBase): + def __init__( + self, + project_id: str, + location: str, + model_name: str = "gemini-3-flash-preview", + task_type: str = "classification", + ): + self.client = genai.Client( + vertexai=True, + project=project_id, + location=location, + http_options=HttpOptions(api_version="v1"), + ) + + # assign model name and vectorstore isntance + self.model_name = model_name + + # decide logic for classification or reranking + # if task_type == "reranking": + # self.system_prompt = RERANK_SYSTEM_PROMPT + # self.response_formatting_function = format_reranking_output + # self.response_schema = RERANK_RESPONSE_SCHEMA + if task_type == "classification": + self.system_prompt = CLASSIFICATION_SYSTEM_PROMPT + self.response_formatting_function = format_classification_output + self.response_schema = ClassificationResponseModel.model_json_schema() + + else: + raise ValueError( + f"Unsupported task_type: {task_type}. Current supported types are 'reranking' and 'classification'." + ) + + def transform(self, results: VectorStoreSearchOutput) -> VectorStoreSearchOutput: + # Group rows by query_id and process individually + grouped = list(results.groupby("query_id")) + all_results = [] + + # Iterate over each group (query_id) + for _, group in grouped: + # Create a prompt for the current query_id + prompt = format_prompt_with_retrieval_results(group) + + # Prompt the model with the single prompt + response = self.client.models.generate_content( + model=self.model_name, + contents=prompt, + config=GenerateContentConfig( + system_instruction=self.system_prompt, + response_mime_type="application/json", + response_schema=self.response_schema, + ), + ) + + # Process the response from the genai + formatted_result = self.response_formatting_function(response.text, group) + all_results.append(formatted_result) + + # Combine all results into the final DataFrame + final_results = pd.concat(all_results, ignore_index=True) + + return VectorStoreSearchOutput(final_results) diff --git a/src/classifai/indexers/main.py b/src/classifai/indexers/main.py index 6f87380..c4954e1 100644 --- a/src/classifai/indexers/main.py +++ b/src/classifai/indexers/main.py @@ -12,6 +12,8 @@ - Batch processing of input files to handle large datasets. - Support for CSV file format (additional formats may be added in future updates). - Integration with a custom embedder for generating vector embeddings. +- Support for user-defined hooks for preprocessing and postprocessing. +- Integreates with an optional AI agent for classifying and transforming search results. - Logging for tracking progress and handling errors during processing. Dependencies: @@ -60,6 +62,7 @@ class VectorStore: file_name (str): the original file with the knowledgebase to build the vector store data_type (str): the data type of the original file (curently only csv supported) vectoriser (object): A Vectoriser object from the corresponding ClassifAI Pacakge module + agent (object): An optional generate AI agent from the ClassifAI Agents module to transform candidate classification search results batch_size (int): the batch size to pass to the vectoriser when embedding meta_data (dict[str:type]): key-value pairs of metadata to extract from the input file and their correpsonding types output_dir (str): the path to the output directory where the VectorStore will be saved @@ -75,6 +78,7 @@ def __init__( # noqa: PLR0913 file_name, data_type, vectoriser, + agent, batch_size=8, meta_data=None, output_dir=None, @@ -89,6 +93,7 @@ def __init__( # noqa: PLR0913 data_type (str): The type of input data (currently supports only "csv"). vectoriser (object): The vectoriser object used to transform text into vector embeddings. + agent (object): The generate AI agent used to transform candidate classification search results. batch_size (int, optional): The batch size for processing the input file and batching to vectoriser. Defaults to 8. meta_data (dict, optional): key,value pair metadata column names to extract from the input file and their types. @@ -107,6 +112,7 @@ def __init__( # noqa: PLR0913 self.file_name = file_name self.data_type = data_type self.vectoriser = vectoriser + self.agent = agent if agent is not None else None self.batch_size = batch_size self.meta_data = meta_data if meta_data is not None else {} self.output_dir = output_dir @@ -458,6 +464,15 @@ def search(self, query: VectorStoreSearchInput, n_results=10, batch_size=8) -> V f"Preprocessing hook returned an invalid VectorStoreSearchOutput object. Error: {e}" ) from e + # If an agent is defined, use it to transform the results, expecxts a VectorStoreSearchOutput object in return + if self.agent is not None: + agent_result_df = self.agent.transform(result_df) + + if not isinstance(agent_result_df, VectorStoreSearchOutput): + raise ValueError("Agent Prep did not succesfully return a VectorStoreSearchOutput object.") + + return agent_result_df + return result_df @classmethod From c4003d482781c20fe216d6f013d67b0a1849cb1e Mon Sep 17 00:00:00 2001 From: frayle-ons <194791647+frayle-ons@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:40:37 +0000 Subject: [PATCH 2/5] renaming baseclass and some minor code fixes --- DEMO/genAI_prototype.ipynb | 2 +- src/classifai/agents/__init__.py | 4 ++-- src/classifai/agents/base.py | 6 +++--- src/classifai/agents/gcp.py | 4 ++-- src/classifai/indexers/main.py | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/DEMO/genAI_prototype.ipynb b/DEMO/genAI_prototype.ipynb index d0cb569..6c19e21 100644 --- a/DEMO/genAI_prototype.ipynb +++ b/DEMO/genAI_prototype.ipynb @@ -155,7 +155,7 @@ "from classifai.agents import GcpAgent\n", "\n", "my_agent = GcpAgent(\n", - " project_id=\"platforms-sandbox\", location=\"europe-west2\", model_name=\"gemini-2.5-flash\", task_type=\"classification\"\n", + " project_id=\"xxxxxx\", location=\"europe-west2\", model_name=\"gemini-2.5-flash\", task_type=\"classification\"\n", ")" ] }, diff --git a/src/classifai/agents/__init__.py b/src/classifai/agents/__init__.py index f354377..dc9f36d 100644 --- a/src/classifai/agents/__init__.py +++ b/src/classifai/agents/__init__.py @@ -1,7 +1,7 @@ -from .base import GeneratorBase +from .base import AgentBase from .gcp import GcpAgent __all__ = [ + "AgentBase", "GcpAgent", - "GeneratorBase", ] diff --git a/src/classifai/agents/base.py b/src/classifai/agents/base.py index 3c9e1c4..d206c0b 100644 --- a/src/classifai/agents/base.py +++ b/src/classifai/agents/base.py @@ -7,13 +7,13 @@ ## -class GeneratorBase(ABC): - """Abstract base class for all Generative RAG models.""" +class Agentase(ABC): + """Abstract base class for all Generative and RAG models.""" @abstractmethod def transform( self, results: VectorStoreSearchOutput, ) -> VectorStoreSearchOutput: - """Passes prompt(s) to the generator and returns the generated text(s) and RAG ranking.""" + """Passes VectorStoreSearchOutput object, which the Agent manipulates in some way and returns.""" pass diff --git a/src/classifai/agents/gcp.py b/src/classifai/agents/gcp.py index f005d64..b1754f9 100644 --- a/src/classifai/agents/gcp.py +++ b/src/classifai/agents/gcp.py @@ -7,7 +7,7 @@ from classifai.indexers.dataclasses import VectorStoreSearchOutput -from .base import GeneratorBase +from .base import AgentBase ######################## #### SYSTEM PROMPTS FOR DIFFERENT TASK TYPES: currently, Classification or Summarization. @@ -136,7 +136,7 @@ def format_classification_output(generated_text, result: VectorStoreSearchOutput ######################## -class GcpAgent(GeneratorBase): +class GcpAgent(AgentBase): def __init__( self, project_id: str, diff --git a/src/classifai/indexers/main.py b/src/classifai/indexers/main.py index c4954e1..9391857 100644 --- a/src/classifai/indexers/main.py +++ b/src/classifai/indexers/main.py @@ -78,7 +78,7 @@ def __init__( # noqa: PLR0913 file_name, data_type, vectoriser, - agent, + agent=None, batch_size=8, meta_data=None, output_dir=None, From 9b2ff758b832111a595bca4f709f7708757b178e Mon Sep 17 00:00:00 2001 From: frayle-ons <194791647+frayle-ons@users.noreply.github.com> Date: Wed, 25 Feb 2026 18:08:40 +0000 Subject: [PATCH 3/5] updated generative ai classifier notebook --- DEMO/genAI_prototype.ipynb | 262 ------ DEMO/generative_ai_classifier.ipynb | 1250 +++++++++++++++++++++++++++ src/classifai/agents/__init__.py | 7 - src/classifai/agents/base.py | 19 - src/classifai/agents/gcp.py | 200 ----- src/classifai/indexers/main.py | 14 - 6 files changed, 1250 insertions(+), 502 deletions(-) delete mode 100644 DEMO/genAI_prototype.ipynb create mode 100644 DEMO/generative_ai_classifier.ipynb delete mode 100644 src/classifai/agents/__init__.py delete mode 100644 src/classifai/agents/base.py delete mode 100644 src/classifai/agents/gcp.py diff --git a/DEMO/genAI_prototype.ipynb b/DEMO/genAI_prototype.ipynb deleted file mode 100644 index 6c19e21..0000000 --- a/DEMO/genAI_prototype.ipynb +++ /dev/null @@ -1,262 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# GEN AI Workflow Notebook ✨✨" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "ClassifAI allows users to create vector databases from text datasets, search those vector datasets in an ad-hoc retrieval manner, and deploy this pipeline as a restAPI service using FastAPI to perform AI assisted classification tasks.\n", - "\n", - "\n", - "An recent emergent AI field is Retrieval Augmented Generation (RAG) where text generation models that traditionally respond to a user 'prompt', first retrieve relevant infomration from a vector database via adhoc retrieval processes, and use those serach results as context to generate an answer for the original user prompt.\n", - "\n", - "#### This notebook shows how we use RAG agents to perform classification on our VectorStore semantic search results!\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## ClassifAIs existing retrieval setup\n", - "\n", - "![Server_Image](files/servers.png)\n", - "\n", - "#### The other modules of ClassifAI provide 3 core classes that work together to:\n", - "\n", - "1. Vectorisers, to create embeddings,\n", - "2. Vectorstores, to create datgabsees of vectors and the ability to searc/query those database\n", - "3. RestAPI, to deploy a rest api service on a server to allow connections that search the created vector databases" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!uv pip install \"classifai[gcp]\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup\n", - "\n", - "We need to first set up a traditional ClassifAI pipeline that can provide search/classification results for our generative model to use as context...\n", - "\n", - "\n", - "All of the following code is part of our standard ClassifAI setupm, and is a short demo of how you can create a semantic search classification system. Check out our general_workflow_demo.ipynb notebook for a walkthrough of the content of these cells!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!gcloud auth application-default login" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from classifai.indexers import VectorStore\n", - "from classifai.vectorisers import HuggingFaceVectoriser\n", - "\n", - "# Our embedding model is pulled down from HuggingFace, or used straight away if previously downloaded\n", - "# This also works with many different huggingface models!\n", - "vectoriser = HuggingFaceVectoriser(model_name=\"sentence-transformers/all-MiniLM-L6-v2\")\n", - "\n", - "\n", - "my_vector_store = VectorStore(\n", - " file_name=\"./data/fake_soc_dataset.csv\", # demo csv file from the classifai package repo! (try some of our other DEMO/data datasets)\n", - " data_type=\"csv\",\n", - " vectoriser=vectoriser,\n", - " agent=None,\n", - " overwrite=True,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## We've set up our semantic search classification system\n", - "\n", - "The following cell runs the 'search' method of the vectorstore, which will take a query for our created vectorstore and return the top k (n_results) most similar samples stored in the vectorstore. This is an example of our exisiting retrieval capabilities with the ClassifAI package. \n", - "\n", - "This retrieved set can then be used to make a final classification decision, by some method such as:\n", - "- automatically choosing the top ranked item, \n", - "- a human in the loop physically looking at the retrieved candidates making the decision,\n", - "- by using a generative AI agent to assess the candidate lists and making a final decison... more on that later" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from classifai.indexers.dataclasses import VectorStoreSearchInput\n", - "\n", - "input_object = VectorStoreSearchInput(\n", - " {\"id\": [1, 2], \"query\": [\"dairy famer that sells milk\", \"happy construction worker\"]}\n", - ")\n", - "\n", - "bb = my_vector_store.search(input_object, n_results=5)\n", - "bb" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Creating an AI Agent\n", - "\n", - "With our semantic search classification pipeline set up, we can send the top K results (seen above) to a Genereative AI model and ask that LLM to make a final decision on which result is the correct result for the user's original input query. Passing semantic search results to a generatieve model for some task is often referred to as 'Retrieval Augmented Generation'.\n", - "\n", - "\n", - "![Rag_Image](files/agent.png) \n", - "\n", - "\n", - "Our `GcpAgent` class agent has a transform() method which accepts a `VectorStoreSearchOutput` object. Passing this `VectorStoreSearchOutput` object to the transform() method will return another `VectorStoreSearchOutput` object, which will modify the results in some way. The classificaion GcpAgent, reduces the semantic search results down to a single result row for each query in the VectorStoreSearchOutput results.\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To instantiate the GcpAgent, the constructor takes:\n", - "\n", - "- project_id - of the google project associated with the Google Gemini embedding models\n", - "- location - corresponding to the Gcloud Project\n", - "- model_name - the specific LLM model to use, that is avaiable on Gcloud\n", - "- task_type - indicates the kind of work you want the LLM to do on the ClassifAI results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from classifai.agents import GcpAgent\n", - "\n", - "my_agent = GcpAgent(\n", - " project_id=\"xxxxxx\", location=\"europe-west2\", model_name=\"gemini-2.5-flash\", task_type=\"classification\"\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can pass some VectorStore search results directly to the agents transform() method" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "semantic_search_results = my_vector_store.search(input_object, n_results=5)\n", - "\n", - "print(type(semantic_search_results))\n", - "semantic_search_results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### To use the If the classification agent can make a decision, it will return a single row for the corresponding query_id. Otherwise it will return the original results\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "my_agent.transform(semantic_search_results)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### To use the agent in our ClassifAI pipeline, we can attach it to the running VectorStore" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "my_vector_store.agent = my_agent" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### We can then run vectorstore.search and it will automatically call the agent to process the results!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "my_vector_store.search(input_object, n_results=5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Thats it!\n", - "\n", - "You can see in the above cell that my_agent.transform() takes and returns a VectorStoreSearchOutput object and therefore integrates with the VectorStore search method.\n", - "\n", - "Check out the general_worfklow notebook to see how VectorStores can be deployed, and you'll find that the Agent can be deployed as an integrated part of the VectorStore." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.7" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/DEMO/generative_ai_classifier.ipynb b/DEMO/generative_ai_classifier.ipynb new file mode 100644 index 0000000..7c1343a --- /dev/null +++ b/DEMO/generative_ai_classifier.ipynb @@ -0,0 +1,1250 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Making an AI Classifier with ClassifAI Hooks and Google GenAI ✨" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Through the use of semantic/vector search, ClassifAI enables users to develop a system to retrieve candidate classification text for a sample of text with an unknown label. This is done by pre-computing and storing vector representations of text samples with known labels, then a text sample with an unknown label can be vectorisered and its embedded representaiton compared to the embedded representation of the labelled samples. Using this process, a ranking of potential candidate labels based on how similar the unlabelled text is to each labelled sample can be obtained. This then offers the user flexibility in how to derive a final classification from the retrieved candidate classifications. \n", + "\n", + "\n", + "There are many posible ways to use the candidate list, and there are also many ways derive a final classification from the ranking list to obtain a single prediction label for a sample of text.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Common strategies include:\n", + "\n", + "1. A human-in-the-loop approach where a human reads the candidate ranking list and unlabelled text to classify what the unknown label should be. This reduces the workload of the human by providing then with the top-K candidate ranking, insteaed of the user having to consider every possible label category, which can be numerous.\n", + "\n", + "2. Automatically selecting the top ranked candidate. This is an efficient approach with minimal additional computation required - however it can lead to inaccurate results. It can help to calibrate on a test collection and set confidence thresholds that determine if a sample should be automatically classified. These thresholds can be calibrated with test datasets.\n", + "\n", + "3. Using a designated AI model to make the final decision. In this case, a RAG AI model utilises the candidate ranking as a set of retrieved results from ClassifAI and makes a final decision based on the information provided." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(!IMAGE OF POSSIBLE STRATEGY OPTIONS)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook we demonstrate an approach to strategy 3, using Google's Gemini generative AI agent together with ClassifAI's hooks functionality, to automatically classify ClassifAI candidate results in a single ClassifAI pipeline." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(!IMAGE OF GENAI CLASSIFIER CONCEPT)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What is covered in this notebook:\n", + "\n", + "1. A ClassifAI recap on how to obtain search results,\n", + "\n", + "2. An introduction to using the GCP Generative AI models,\n", + "\n", + "3. Custom Hooks in ClassifAI,\n", + "\n", + "4. Setting up a Generateive AI model to make the final classification in ClassifAI - Systems Prompts, Response formatting, ClassifAI Hook operations,\n", + "\n", + "5. A full implementation of the code (you can skip to this section for a view of the final solution that can be copied or used in your own work)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Requirements / Prerequisites\n", + "\n", + "This notebook is designed so that you can execute the code cells and follow along with the implementation. To do this you will need:\n", + "\n", + "1. Download this notebook from your local machine, and the DEMO/data/fake_soc_dataset.csv file which will be used as a test dataset,\n", + "\n", + "2. Set up a virtual environment with ClassifAI[gcp] installed for this ipynb instance - view ClassifAI installation instructions in the repo,\n", + "\n", + "3. Ensure that you have Google Cloud Platform project set up - with the Generative AI API enabled to use Google's Gemini models." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 1: Using ClassifAI to get candidate Rankings" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!uv pip install \"https://github.com/datasciencecampus/classifai/releases/download/v0.2.1/classifai-0.2.1-py3-none-any.whl[gcp]\"\n", + "\n", + "## you will also need to authenticate to GCP and set up your project and bucket for the next steps 'gcloud auth login' and 'gcloud config set project [PROJECT_ID]'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will start with a script that will create a ClassifAI `VectorStore` object, which we use to create a Vector Database of labelled samples. Later we can use this VectorStore object to find labelled text sample that are similar to the text of a provided unlabelled sample." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classifai.indexers import VectorStore\n", + "from classifai.vectorisers import GcpVectoriser\n", + "\n", + "# Initialise the vectoriser\n", + "demo_vectoriser = GcpVectoriser(project_id=\"YOUR GCP PROJECT ID\", vertexai=True)\n", + "\n", + "\n", + "# Initialise the vector store, pointing the demo to the demo test data\n", + "demo_vectorstore = VectorStore(\n", + " file_name=\"./data/fake_soc_dataset.csv\",\n", + " data_type=\"csv\",\n", + " vectoriser=demo_vectoriser,\n", + " output_dir=\"./demo_vdb\",\n", + " overwrite=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above cell should indicate a succesfully created a VectorStore which is now in memory as `demo_vectorstore`. It contains vectors for the `fake_soc_dataset` which has many dummy example texts with corresponding dummy SOC labels.\n", + "\n", + "\n", + "We can call the `demo_vectorstore.search()` method, passing it a `VectorStoreSearchInput` dataclass object with an unlabelled sample of text, to get back a candidate ranking of the `fake_soc_dataset` entries that have the most similar text to our labelled sample." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classifai.indexers.dataclasses import VectorStoreSearchInput\n", + "\n", + "# Create a search input\n", + "search_input = VectorStoreSearchInput({\"id\": [\"1\"], \"query\": [\"a photographer hired for wedding events\"]})\n", + "# call the VectorStore search method\n", + "demo_vectorstore.search(search_input, n_results=5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you succesfully ran the above code cell, you should now see a pandas dataframe output with 5 candidate results. The unlabelled input sample was `a photographer hired for wedding events`, which is shown in the `query_text` column. The `doc_text` column of each row shows the corresponding top 5 most similar samples from the `fake_soc_dataset.csv` file, with the `doc_id` column inticating the predicted label. `rank` and `score` columns provide additionl relevant information.\n", + "\n", + "This showcases the core functionality of the ClassifAI package, being able to build a semantic search engine for your labelledd datasets and get a candidate result sets for unlabelled samples. \n", + "\n", + "As described in the introduction section, these candidate lists can be used in different ways to arrive at a final decision about the correct label for our sample. \n", + "\n", + "ClassifAI provides a 'shortlist' of options. In this demo we're now going to show how we can use a Generative AI model to automatically make the final classification." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(!IMAGE OF END TO END VECTOR SEARCH)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See additional resources on ClassifAI on the OpenAI Github Repo:\n", + "\n", + "- https://github.com/datasciencecampus/classifai" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 2: Generative AI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This section provides a brief overview of how Google's Generative AI (genai) API to enables us to use the AI models.\n", + "\n", + "Broadly, Generative AI models accept some text as input, which can be in the form of an instruction, telling the model to _generate_ some output text. \n", + "\n", + "We will see how we can set up a connection to one of Google's cloud-hosted generative models and 'prompt' it to produce some output. We'll also explore basic generative model principles such as 'system prompting' and 'structured outputs', which we'll use later to construct a generative model that makes a final classification of some input, that would be suitable to do classifications on our `VectorStore` candidate results.\n", + "\n", + "This section of the tutorial is purely about the Generative model capabilities, later we will see how these models can be used in a pipeline with ClassifAI to make classifications. In this section we showcase a simple 'weather classifier' which will indicate if a sample of text contains a description of good or bad weather." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prompting the Google Genai API" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!uv pip install google-genai" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Firstly, we can establish an API connection to a generative model hosted by google and 'prompt' it to write a simple story about the weather. This showcases how we can pass text to a generative model and get some text response back." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from google import genai\n", + "\n", + "# Set up the API key for authentication\n", + "client = genai.Client(api_key=\"YOUR API KEY HERE\")\n", + "\n", + "# Define the model to use\n", + "chosen_model = \"gemini-2.5-flash\" # Replace with the appropriate Gemini Flash 2.5 model name if different" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Send a text prompt to the model\n", + "prompt = \"Write a very short description about todays weather.\"\n", + "\n", + "\n", + "response = client.models.generate_content(\n", + " model=chosen_model,\n", + " contents=prompt,\n", + ")\n", + "\n", + "# Print the response\n", + "print(\"Generated Text:\")\n", + "print(response.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have a Genai client set up to work with the google cloud models, we can instruct the generative model on how to 'behave' by choosing how we prompt the model. For example, relevant to our ClassifAI task, we can ask the model to classify inputs into categories." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prompt2 = \"\"\"\n", + "\n", + "Classify the following text into 'good weather' or 'bad weather':\n", + "\n", + "The rain is crashing down in Scotland.\n", + "\n", + "\"\"\"\n", + "\n", + "response = client.models.generate_content(\n", + " model=chosen_model,\n", + " contents=prompt2,\n", + ")\n", + "\n", + "\n", + "# Print the response\n", + "print(\"Generated Text:\")\n", + "print(response.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you change `prompt2` to different weather descriptions you will likely see some output from the model indicating one of our two classes. But there are two core problems with this current implementation:\n", + "\n", + "1. We're sending the task instruction for the model as part of the prompt, which is inefficient and may be subject to change (or attack) by users. \n", + "\n", + "2. There isn't a gaurantee the output generated text is consistent, it often changes format, being more verbose sometimes, and more direct other times, and may respond differently to non-weather related input.\n", + "\n", + "Both of these issues will make it difficult to use this generative model to make predictions for our ClassifAI candidate list in a controlled and repeatable way. We can introduce extra features that resolve these problems, respecitively:\n", + "\n", + "1. We can introduce a 'system prompt' which separate the instruction part of the input from the part of text that is to be classified\n", + "\n", + "2. The Gemini AI models offer a 'structured output' guarantee whereby we can instruct the model to output specific values in a formatted manner" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### System Prompts" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### System Prompts vs Regular Prompts\n", + "\n", + "A **system prompt** is a special type of prompt that defines the behavior, role, or rules for the generative AI model before processing user input. Unlike a regular prompt, which combines both the task instruction and the input text, a system prompt separates these concerns by providing a predefined context or instruction that remains consistent across multiple queries.\n", + "\n", + "#### Advantages of Using System Prompts:\n", + "1. **Consistency**: By separating the task instruction from the input text, system prompts ensure that the model behaves predictably and consistently across different inputs.\n", + "2. **Efficiency**: The instruction does not need to be repeated for every query, reducing redundancy and improving processing efficiency.\n", + "3. **Security**: System prompts are less prone to user manipulation or injection attacks, as the task rules are predefined and immutable.\n", + "4. **Scalability**: They allow for easier integration into pipelines, such as our ClassifAI workflow, where the same classification rules can be applied to multiple inputs without modification." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Google GenAI SDK allows system prompts to be added through the Python API, as shown in the following code cell.\n", + "\n", + "We can add some interesting system instructions just to show the effect of how this mechanism steers the generation process." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from google.genai import types\n", + "\n", + "response = client.models.generate_content(\n", + " model=chosen_model,\n", + " contents=\"Write a very short description about todays weather.\",\n", + " config=types.GenerateContentConfig(\n", + " system_instruction=\"After the response, include the phrase: 'Also, I love cauliflower!'. No matter what you are asked, you must include this phrase at the end of your response.'\"\n", + " ),\n", + ")\n", + "print(response.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "More relevant to our ClassifAI classification task, we can use the system prompt/instruction to better define how we want a Generative model to generate responses for classification tasks. Below we reformulate our weather classification task so that we don't need to pass the instruction as part of the input data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prompt3 = \"\"\"\n", + "\n", + "Sunny weather and pleasant breeze\n", + "\n", + "\"\"\"\n", + "\n", + "response = client.models.generate_content(\n", + " model=chosen_model,\n", + " contents=prompt3,\n", + " config=types.GenerateContentConfig(\n", + " system_instruction=\"You are a weather classification agent. You classify input content text into 'good weather' or 'bad weather'. The content will be a description of weather. Only output one of those two responses. Do not include any other text in your response, just the classification.'\"\n", + " ),\n", + ")\n", + "\n", + "\n", + "# Print the response\n", + "print(\"Generated Text:\")\n", + "print(response.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The system instruction can be useful in many scenarios - see further resources:\n", + "\n", + "- https://ai.google.dev/gemini-api/docs/text-generation\n", + "- https://github.com/google-gemini/cookbook/blob/main/quickstarts/System_instructions.ipynb\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sturctured Outputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We've seen how we can add instruction to an AI model with the system prompt to make the Generative AI produce outputs that are more in line with classificaiton. But this isn't especially robust - sometimes the (regular) prompt or another factor can cause unexpected output - for a system that may rely on these outputs, such as if we want to use this AI with ClassifAI to make final classifications.\n", + "\n", + "In this section we explore a feature of the Genai API that allows us to enforce specific outputs, not just including that as part of an instruction in the system prompt." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Google Genai documenation gives the following example of how Pydantic can be used to provide a structure that the model should adhere to when generating text. You can read more about structured outputs and this example at: \n", + "* http://ai.google.dev/gemini-api/docs/structured-output?example=recipe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pydantic import BaseModel, Field\n", + "\n", + "\n", + "class Ingredient(BaseModel):\n", + " name: str = Field(description=\"Name of the ingredient.\")\n", + " quantity: str = Field(description=\"Quantity of the ingredient, including units.\")\n", + "\n", + "\n", + "class Recipe(BaseModel):\n", + " recipe_name: str = Field(description=\"The name of the recipe.\")\n", + " prep_time_minutes: int | None = Field(description=\"Optional time in minutes to prepare the recipe.\")\n", + " ingredients: list[Ingredient]\n", + " instructions: list[str]\n", + "\n", + "\n", + "googledemoprompt = \"\"\"\n", + "Please extract the recipe from the following text.\n", + "The user wants to make delicious chocolate chip cookies.\n", + "They need 2 and 1/4 cups of all-purpose flour, 1 teaspoon of baking soda,\n", + "1 teaspoon of salt, 1 cup of unsalted butter (softened), 3/4 cup of granulated sugar,\n", + "3/4 cup of packed brown sugar, 1 teaspoon of vanilla extract, and 2 large eggs.\n", + "For the best part, they'll need 2 cups of semisweet chocolate chips.\n", + "First, preheat the oven to 375°F (190°C). Then, in a small bowl, whisk together the flour,\n", + "baking soda, and salt. In a large bowl, cream together the butter, granulated sugar, and brown sugar\n", + "until light and fluffy. Beat in the vanilla and eggs, one at a time. Gradually beat in the dry\n", + "ingredients until just combined. Finally, stir in the chocolate chips. Drop by rounded tablespoons\n", + "onto ungreased baking sheets and bake for 9 to 11 minutes.\n", + "\"\"\"\n", + "\n", + "response = client.models.generate_content(\n", + " model=chosen_model,\n", + " contents=googledemoprompt,\n", + " config={\n", + " \"response_mime_type\": \"application/json\",\n", + " \"response_json_schema\": Recipe.model_json_schema(),\n", + " },\n", + ")\n", + "\n", + "recipe = Recipe.model_validate_json(response.text)\n", + "print(recipe)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can adapt this to our recipe extraction example into our weather classifier system, adding to our system prompt, so that it outputs a specific label for the prompt weather:\n", + "\n", + "* 1 - for good weather\n", + "* 0 - for bad weather\n", + "\n", + "We use a Pydantic model to create a `WeatherLabel` class which defines a schema for the Google Genai model to adhere to when generating a text response." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prompt4 = \"\"\"\n", + "\n", + "Sunny weather and pleasant breeze\n", + "\n", + "\"\"\"\n", + "\n", + "\n", + "SYSTEM_INSTRUCTION = \"\"\"\n", + "You are a strict weather classifier agent. Your job is to classify the input text as either good weather or bad weather\n", + "Return JSON only that matches the provided schema.\n", + "\n", + "Labeling rules:\n", + "- label = 1 (good weather): positive/pleasant conditions (e.g., sunny, clear skies, warm, mild, calm).\n", + "- label = 0 (bad weather): negative/hazardous/unpleasant conditions (e.g., rain, storm, snow, ice, fog, extreme heat/cold, high winds).\n", + "- If both good and bad are mentioned, label based on the overall/most salient condition. If unclear, choose 0.\n", + "Do not include any extra keys.\n", + "\"\"\"\n", + "\n", + "\n", + "# A Py\n", + "class WeatherLabel(BaseModel):\n", + " label: int = Field(ge=0, le=1, description=\"1 = good weather, 0 = bad weather\")\n", + "\n", + "\n", + "response = client.models.generate_content(\n", + " model=chosen_model,\n", + " contents=prompt4,\n", + " config=types.GenerateContentConfig(\n", + " system_instruction=SYSTEM_INSTRUCTION,\n", + " response_mime_type=\"application/json\",\n", + " response_json_schema=WeatherLabel.model_json_schema(),\n", + " ),\n", + ")\n", + "\n", + "\n", + "# Print the response\n", + "print(\"Generated Text:\")\n", + "print(response.text)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The output from the model now, should adhere much more strictly to text that looks suitable for classification in a traditional sense - predicting a class label value." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In practice:\n", + "\n", + "- `WeatherLabel`: a schema that enforces shape/types (label must be int 0/1).\n", + "- `SYSTEM_INSTRUCTION`: defines semantics of the task (“what is good vs bad weather”, potentially how to handle mixed cases).\n", + "\n", + "\n", + "We will use both of these features to build a Generative AI agent for classification with ClassifAI package.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 3: Hooks and Custom ClassifAI Workflows" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this part of the demo we briefly recap how custom logic can be added to the ClassifAI VectorStore Pipeline using hooks, which will be neccessay for adding a generative classifier." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is a longer, dedicated notebook tutorial on creating Hooks and how to use then to define custom workflows available from the ClassifAI repo:\n", + "\n", + "https://github.com/datasciencecampus/classifai/blob/main/DEMO/custom_preprocessing_and_postprocessing_hooks.ipynb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(!HOOK CONCEPT IMAGE GOES HERE FROM HOOK NOTEBOOK)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Concept of Hooks in ClassifAI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `VectorStore` is the central component of the ClassifAI package. It provides the ability to create Vector database with labelled text samples, and then do similarity search and other operations on that `VectorStore` including `search()`, `reverse_search()` and embedding raw text with the `embed()` method.\n", + "\n", + "Each of these methods, has an associated `dataclass` input and output objects - these are Pandas dataframe like objects that specify what data needs to be included when calling the various methods of the `VectorStore`. For example, the `search()` method takes as input a `VectorStoreSearchInput` object and returns a `VectorStoreSearchOutput` object, both of which specify specific columns of data. This ensures data is passsed to our API correctly, and also ensures that the reseponse from the `VectorStore` is generated correctly. This demo used `VectorStoreSearchInput` in part 1 of the demo to create inputs to the `search` method.\n", + "\n", + "Finally *Hooks* allow users of the package to write custom functions that modify the data in the dataclass objects at certain points in the package codebase - before and after a specific method is called. Hooks can apply any user-defined operation on a specific dataclass object, as long as they return a valid dataclass object of the same kind. For example, users could write a spell-checking function that corrects the text of queries input to the search method. See example hooks int he demo notebook referenced in the previous cells for implementation examples." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the case of using Generative AI as a classifier, in this demo we set up the classifier as a Hook, calling the Genai client inside the hook function to operate on a set of results returned form the `VectorStore.search()` API." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example hook, capitalising the candidate result texts" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def capitalise_candidate_texts(input_data):\n", + " # convert the result texts to CAPITAL letters\n", + " input_data[\"doc_text\"] = input_data[\"doc_text\"].str.upper()\n", + "\n", + " print(type(input_data))\n", + "\n", + " return input_data\n", + "\n", + "\n", + "# Initialise the vector store, pointing the demo to the demo test data\n", + "demo_vectorstore = VectorStore(\n", + " file_name=\"./data/fake_soc_dataset.csv\",\n", + " data_type=\"csv\",\n", + " vectoriser=demo_vectoriser,\n", + " output_dir=\"./demo_vdb\",\n", + " overwrite=True,\n", + " hooks={\"search_postprocess\": capitalise_candidate_texts},\n", + ")\n", + "\n", + "\n", + "query_df = VectorStoreSearchInput({\"id\": [1], \"query\": [\"apple merchant\"]})\n", + "\n", + "demo_vectorstore.search(query_df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You should see that in the resulting `VectorStoreSearchOutput` object that ll of the `doc_text` entries are fully capitalised, which was the action performed by our hook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Part 4: Building a Generative Classifier for ClassifAI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this section we will:\n", + "\n", + "1. Ceate a Generative AI agent that can do classifications on VectorStore results using a system prompt and structured output to guide the model,\n", + "\n", + "2. Create a Custom Hook function that passes the VectorStore Search results to the generateive model for classification,\n", + "\n", + "3. Write custom pre-processing and post-processing steps that will execute inside the hook,\n", + "\n", + "4. Use the Genai in a custom search postprocessing hook of a VectorStore to get final classification results." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Overview" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(!DIAGRAM OF GENAI RAG CLASSIFIER IN HOOK IN CLASSIFAI)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We plan to add our generative AI model in a post processsing hook to interact with search results and determine a final result.\n", + "\n", + "For this we will need to format the results data as a text prompt for the model, provide the model with instructions on how to do the classificatiin task and what format to output its prediction. Then we will also need to add additional logic to reduce the original dataframe down to a final classification based on the Generative model's output classificaiton." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Defining a System Prompt and Structured Output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The VectorStoreSearchoutput search results are ranked, with a corresponding ID and text entry for each candidate. We design our system prompt to inform the model that it will receive N candidates and must select a corresponding ID for the entry it 'thinks' corresponds best to the input query. We instruct the model to output an ID from 1 to N, the ID corresponding to the candidate entry number.\n", + "\n", + "We also specify several guidelines to the model and then provide an example of how the results object will be presentred to the Generateive model, (we will write the code that formats the VectorStore results object to this XML format shortly.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def make_classification_system_prompt(n: int) -> str:\n", + " CLASSIFICATION_SYSTEM_PROMPT = \"\"\"You are an AI assistant designed to classify a user query based on the provided context. You will be provided with candidate entries retrieved from a knowledge base, each containing an ID and a text description. Your task is to analyze the user query and the text of the context entries to determine which of the entries best matches the user query.\n", + "\n", + " Guidelines:\n", + " 1. Always prioritize the provided context when making your classification.\n", + " 2. The context will be provided as an XML structure containing multiple entries. Each entry includes an ID and a text description.\n", + " 3. The IDs will be integer values from 1 to {n}, corresponding to the {n} candidate entries.\n", + " 4. Use the text of the entries to determine the most relevant classification for the user query.\n", + " 5. Your output must be a JSON object that adheres to the following schema:\n", + " - The JSON object must contain a single key, `classification`.\n", + " - The value of `classification` must be an integer between 1 and {n}, representing the ID of the best matching entry.\n", + " - If no classification can be determined due to ambiguity or insufficient information, the value of `classification` must be `-1`.\n", + "\n", + " Example of the required JSON output:\n", + " {{\n", + " 'classification': 1\n", + " }}\n", + "\n", + " The XML structure for the context and user query will be as follows:\n", + " \n", + " \n", + " 0\n", + " [Text from the first entry]\n", + " \n", + " \n", + " 1\n", + " [Text from the second entry]\n", + " \n", + " ...\n", + " \n", + " {n}\n", + " [Text from the fifth entry]\n", + " \n", + " \n", + "\n", + " \n", + " [The user query will be inserted here]\n", + " \n", + "\n", + " Your task is to analyze the context and the user query, and return the classification in the required structured format.\n", + " \"\"\"\n", + "\n", + " return CLASSIFICATION_SYSTEM_PROMPT.format(n=n)\n", + "\n", + "\n", + "system_prompt = make_classification_system_prompt(n=7)\n", + "print(system_prompt)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we specify a Pydantic class model that will guide the structure of the output. Similar to our ealier example, we now want the generative model to output an ID between 1 and N, adhering the the System Prompt above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Literal\n", + "\n", + "from pydantic import BaseModel, Field, conint, create_model\n", + "\n", + "\n", + "def make_classification_model(n: int) -> type[BaseModel]:\n", + " if n < 1:\n", + " raise ValueError(\"n must be >= 1\")\n", + "\n", + " PositiveId = conint(ge=1, le=n) # type: ignore[valid-type]\n", + "\n", + " return create_model(\n", + " \"ClassificationResponseModel\",\n", + " classification=(\n", + " Literal[-1] | PositiveId,\n", + " Field(description=f\"-1 if unclassifiable, else an integer in [1, {n}] (no 0).\"),\n", + " ),\n", + " )" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case we have created a funcition that instructs the model to output either -1, or a value between 1 and N where N can be dynamically scaled depending on how many results are passed to the model." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pre-processing and post processing for the GenAI agent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now need methods for:\n", + "\n", + "- formatting the query and results object to string format to present to the agent\n", + "- formatting the response from the agent and selecting the final result based on the agent generation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our query-results formatting is straight forward - we want to convert from the VectorStoreSearchOutput object to the XML format specified earlier in the system prompt. Python code function to do this is as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "\n", + "def format_prompt_with_vectorstore_results(results_df) -> str:\n", + " # Extract the user query (assuming all rows have the same query_id and query_text)\n", + " user_query = results_df[\"query_text\"].iloc[0]\n", + "\n", + " # Build the section\n", + " context_entries = \"\\n\".join(\n", + " f\" \\n {idx + 1}\\n {row['doc_text']}\\n \"\n", + " for idx, row in results_df.iterrows()\n", + " )\n", + "\n", + " # Combine everything into the final prompt\n", + " formatted_prompt = f\"\"\"\n", + "\n", + "{context_entries}\n", + "\n", + "\n", + "\n", + " {user_query}\n", + "\"\"\"\n", + "\n", + " return formatted_prompt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Creating a dummy VectorStoreSearchOutput object we can see how the above function transforms the data that will be passed as the prompt to the agent model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classifai.indexers.dataclasses import VectorStoreSearchOutput\n", + "\n", + "# Create a sample dataframe adhering to the searchOutputSchema\n", + "sample_data = {\n", + " \"query_id\": [\"1\", \"1\", \"1\", \"1\", \"1\"],\n", + " \"query_text\": [\n", + " \"a photographer hired for wedding events\",\n", + " \"a photographer hired for wedding events\",\n", + " \"a photographer hired for wedding events\",\n", + " \"a photographer hired for wedding events\",\n", + " \"a photographer hired for wedding events\",\n", + " ],\n", + " \"doc_id\": [\"701\", \"702\", \"703\", \"704\", \"705\"],\n", + " \"doc_text\": [\n", + " \"Wedding photographer available for hire.\",\n", + " \"Professional event photographer for weddings.\",\n", + " \"Experienced celebration event photographer.\",\n", + " \"Photographer specializing in nature photography.\",\n", + " \"A fashion model photographer.\",\n", + " ],\n", + " \"rank\": [0, 1, 2, 3, 4],\n", + " \"score\": [0.95, 0.90, 0.85, 0.80, 0.75],\n", + "}\n", + "\n", + "# Wrap the validated dataframe in the VectorStoreSearchOutput class\n", + "sample_results_object = VectorStoreSearchOutput(sample_data)\n", + "\n", + "\n", + "# pass the sample results object to the formatting function and print the output\n", + "print(format_prompt_with_vectorstore_results(sample_results_object))\n", + "\n", + "print(\"\\n\\n-----\\n\\n\")\n", + "# showing the original result object for compariosn with the XML string\n", + "sample_results_object" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Focusing on the output of the model, we expect either a value of -1 or a value between 1 AND N. We write a function that validates that output, and then reduces the original VectorStoreSearchOutput object down to a single row result, based on the output label. If the agent returns -1 or an invalid response, we design this function to play it safe and return the original results object with no modifications. Although, the design choice here can be adapted for other functionalities - such as just returning the top ranked item with no agent assessment or otherwise." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "\n", + "def format_agent_classification(\n", + " agent_generated_text: str, results_df: VectorStoreSearchOutput\n", + ") -> VectorStoreSearchOutput:\n", + " # Parse the generated text\n", + " try:\n", + " response = json.loads(agent_generated_text)\n", + " validation_model = make_classification_model(n=results_df.shape[0])\n", + " validated_response = validation_model(**response)\n", + " except (json.JSONDecodeError, ValueError):\n", + " # If parsing or validation fails, return the original DataFrame\n", + " return results_df\n", + "\n", + " # Extract the classification\n", + " classification = validated_response.classification\n", + "\n", + " # Validate the classification value is in the expected range\n", + " MIN_INDEX = 1\n", + " MAX_INDEX = len(results_df)\n", + " if int(classification) < MIN_INDEX or int(classification) > MAX_INDEX:\n", + " return results_df\n", + "\n", + " # Otherwise, filter to only keep the row with the classified doc_id, adjusting for 1-based 0-indexing in the classification\n", + " result = results_df.iloc[[classification - 1]].reset_index(drop=True)\n", + "\n", + " return VectorStoreSearchOutput(result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can try out this function as well using our example result_df and for now a manually generated agent json response." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "genai_response = {\"classification\": \"3\"}\n", + "\n", + "classified_result_df = format_agent_classification(json.dumps(genai_response), sample_results_object)\n", + "\n", + "classified_result_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you change the classification label value, you'll see different results being selected, and if the classificaiton label is set to -1, 0 or greater than 5, or some other invalid value it will return the full dataset." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Instantiating the Agent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now want to pull all this together and demonstrate the generative agent performing the above task." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from google import genai\n", + "from google.genai import types\n", + "\n", + "# Set up the API key for authentication\n", + "client = genai.Client(api_key=\"YOUR API KEY HERE\")\n", + "\n", + "# Define the model to use\n", + "chosen_model = \"gemini-2.5-flash\" # Replace with the appropriate Gemini Flash 2.5 model name if different\n", + "\n", + "\n", + "prompt5 = format_prompt_with_vectorstore_results(sample_results_object)\n", + "\n", + "\n", + "response = client.models.generate_content(\n", + " model=chosen_model,\n", + " contents=prompt5,\n", + " config=types.GenerateContentConfig(\n", + " system_instruction=make_classification_system_prompt(n=len(sample_results_object)),\n", + " response_mime_type=\"application/json\",\n", + " response_json_schema=make_classification_model(n=len(sample_results_object)).model_json_schema(),\n", + " ),\n", + ")\n", + "\n", + "\n", + "classification_df = format_agent_classification(response.text, sample_results_object)\n", + "\n", + "classification_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Done! The model does take a few seconds to consider, but here we have a VectorStore result, being formatted into a prompt, the model is provided a system instruction and structured Pydantic guidance on what to produce with the provided information, and a post-processsing function that outputs the answer" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Building a Hook to process results with the agent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All thats left to do is to code the post-processing search() method hook, which we be called to operate on the VectorStoreSearchOutput object after the method returns that object. We provide the full hook implementation in the next with extra comments, typing together the various components we've discussed up until now" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# reinstiating the genai Client outside of the function to avoid re-instantiating on every call\n", + "client = genai.Client(api_key=\"YOUR API KEY HERE\")\n", + "chosen_model = \"gemini-2.5-flash\" # we could choose another model, for example gemini-3 vraiants are available\n", + "\n", + "# we've alreadt defined the CLASSIFICATION_SYSTEM_PROMPT, format_prompt_with_vectorstore_results and the make_classification_model function, so we recan use those directly without redefining\n", + "\n", + "\n", + "def rag_classifier(input_data: VectorStoreSearchOutput) -> VectorStoreSearchOutput:\n", + " # first our result df might have multiple queries in it, so we want to group by query_id and query_text to ensure we classify each unique query separately\n", + " per_query = list(input_data.groupby([\"query_id\"]))\n", + "\n", + " # creating an empty list to store the classified results for each query\n", + " classified_results = []\n", + "\n", + " # iterate over the object for each query\n", + " for _, group in per_query:\n", + " # first we want to set a manual maximum limit on how many samples the model can classify, as the more samples we include the more context we provide but also the more expensive the model call will be. Here we take the top 5 results for each query, but this could be adjusted based on the expected number of results and the cost/benefit tradeoff of providing more context to the model\n", + " # and code can handle any value of N, this is a practical limit relating to the generateive models context window and effectiveness.\n", + " group = group.head(5) # noqa: PLW2901\n", + "\n", + " # pass the group dataframe to the formatting function to get the prompt for this query\n", + " prompt = format_prompt_with_vectorstore_results(group)\n", + "\n", + " # send the prompt to the model and get the response, passing the same system instruction and structured json schema as before\n", + " response = client.models.generate_content(\n", + " model=chosen_model,\n", + " contents=prompt,\n", + " config=types.GenerateContentConfig(\n", + " # there are many other config options we could experiment with here, for example temperature, nucleas sampling, top_k, top_p, and max_response_tokens\n", + " system_instruction=make_classification_system_prompt(n=group.shape[0]),\n", + " response_mime_type=\"application/json\",\n", + " response_json_schema=make_classification_model(n=group.shape[0]).model_json_schema(),\n", + " ),\n", + " )\n", + "\n", + " # we try to pass the result to our postprocessing function which will either return the chosen classificaiton, or on failure return the original result\n", + " classified_group = format_agent_classification(response.text, group)\n", + "\n", + " # the classification for that query is added to the classified_results list\n", + " classified_results.append(classified_group)\n", + "\n", + " # we convert the results to a single dataframe\n", + " final_result = pd.concat(classified_results).reset_index(drop=True)\n", + "\n", + " # we wrap the final result in the VectorStoreSearchOutput class to ensure it adheres to the expected schema\n", + " hook_output = VectorStoreSearchOutput(final_result)\n", + "\n", + " return hook_output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets see how that works when we apply it to a VectorStore as a Hook!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classifai.indexers import VectorStore\n", + "from classifai.vectorisers import GcpVectoriser\n", + "\n", + "# Initialise the vectoriser\n", + "demo_vectoriser = GcpVectoriser(project_id=\"YOUR GCP PROJECT ID\", vertexai=True)\n", + "\n", + "\n", + "# Initialise the vector store, pointing the demo to the demo test data\n", + "demo_vectorstore = VectorStore(\n", + " file_name=\"./data/fake_soc_dataset.csv\",\n", + " data_type=\"csv\",\n", + " vectoriser=demo_vectoriser,\n", + " output_dir=\"./demo_vdb\",\n", + " overwrite=True,\n", + " hooks={\"search_postprocess\": rag_classifier},\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classifai.indexers import VectorStoreSearchInput\n", + "\n", + "search_input = VectorStoreSearchInput(\n", + " {\"id\": [\"1\", \"2\"], \"query\": [\"a photographer hired for wedding events\", \"Tax expert advisor\"]}\n", + ")\n", + "\n", + "result = demo_vectorstore.search(search_input, n_results=5)\n", + "\n", + "result" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Thats it! Without the added generative hook we would see a set of candidate results in each case here. Dynamically removing the genai hook we can see what results were considered by the Generative RAG model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "demo_vectorstore.hooks = {}\n", + "result_no_genai = demo_vectorstore.search(search_input, n_results=5)\n", + "result_no_genai" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## That's it! We've walked through:\n", + "\n", + "- Establishing connections to Google Generative AI models\n", + "- Configuring AI model input and output for Classification tasks and how models should behave\n", + "- Setting up pre- and post-processing functions to handle the model input and output\n", + "\n", + "In this last part of this notebook (below) we provide a full code implementation for a VectorStore, and GenAI classifier hook, but here are some additional final points to consider:\n", + "\n", + "- For each query and result, we call the Google API sequentially - which is fine but can be slow - in the below final imp we show how it can be done in an asynchronous manner for each query to speed things up.\n", + "\n", + "- We didn't add any additional checks to make sure the user query prompt would not break the pre-processing formatting function , such as the user prompt containing punctuation that may break the formatter.\n", + "\n", + "- There are many different models available to consider with different trade offs in cost and capability as well as many metadata arguments that can affect performance, while our guide shows good practices using systems prompts and other features it is worth taking time to reviewing the Google documentation on how best to use these models and how to acheive constistent performance." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Typing it all together" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following code cells provide a complete implementation of the Generative AI RAG agent, (reimporting dependecies and reinitialising all variables)\n", + "\n", + "In this version we provide one change with an _asyncronous_ version of the API calls to the genai client, to speed up the processing of queries." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "classifai", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/classifai/agents/__init__.py b/src/classifai/agents/__init__.py deleted file mode 100644 index dc9f36d..0000000 --- a/src/classifai/agents/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from .base import AgentBase -from .gcp import GcpAgent - -__all__ = [ - "AgentBase", - "GcpAgent", -] diff --git a/src/classifai/agents/base.py b/src/classifai/agents/base.py deleted file mode 100644 index d206c0b..0000000 --- a/src/classifai/agents/base.py +++ /dev/null @@ -1,19 +0,0 @@ -from abc import ABC, abstractmethod - -from classifai.indexers.dataclasses import VectorStoreSearchOutput - -## -# The following is the abstract base class for all RAG generative models. -## - - -class Agentase(ABC): - """Abstract base class for all Generative and RAG models.""" - - @abstractmethod - def transform( - self, - results: VectorStoreSearchOutput, - ) -> VectorStoreSearchOutput: - """Passes VectorStoreSearchOutput object, which the Agent manipulates in some way and returns.""" - pass diff --git a/src/classifai/agents/gcp.py b/src/classifai/agents/gcp.py deleted file mode 100644 index b1754f9..0000000 --- a/src/classifai/agents/gcp.py +++ /dev/null @@ -1,200 +0,0 @@ -import json - -import pandas as pd -from google import genai -from google.genai.types import GenerateContentConfig, HttpOptions -from pydantic import BaseModel, Field - -from classifai.indexers.dataclasses import VectorStoreSearchOutput - -from .base import AgentBase - -######################## -#### SYSTEM PROMPTS FOR DIFFERENT TASK TYPES: currently, Classification or Summarization. -######################## - -CLASSIFICATION_SYSTEM_PROMPT = """You are an AI assistant designed to classify a user query based on the provided context. You will be provided with 5 candidate entries retrieved from a knowledge base, each containing an ID and a text description. Your task is to analyze the user query and the text of the context entries to determine which of the entries best matches the user query. - -Guidelines: -1. Always prioritize the provided context when making your classification. -2. The context will be provided as an XML structure containing multiple entries. Each entry includes an ID and a text description. -3. The IDs will be integer values from 0 to 4, corresponding to the 5 candidate entries. -4. Use the text of the entries to determine the most relevant classification for the user query. -5. Your output must be a JSON object that adheres to the following schema: - - The JSON object must contain a single key, `classification`. - - The value of `classification` must be an integer between 0 and 4, representing the ID of the best matching entry. - - If no classification can be determined due to ambiguity or insufficient information, the value of `classification` must be `-1`. - -Example of the required JSON output: -{ - "classification": 1 -} - -The XML structure for the context and user query will be as follows: - - - 0 - [Text from the first entry] - - - 1 - [Text from the second entry] - - ... - - 4 - [Text from the fifth entry] - - - - - [The user query will be inserted here] - - -Your task is to analyze the context and the user query, and return the classification in the required structured format.""" - - -######################## -#### GENERAL FUNCTION FOR FORMATTING THE USER QUERY PROMPT WITH RETRIEVED RESULTS FROM VECTORSTORE -######################## - - -def format_prompt_with_retrieval_results(df: pd.DataFrame) -> str: - """Generates a formatted XML prompt for the generative model from a structured DataFrame. - - Args: - df (pd.DataFrame): A DataFrame containing columns as per `searchOutputSchema`. - - Returns: - str: The formatted XML prompt. - """ - # Extract the user query (assuming all rows have the same query_id and query_text) - user_query = df["query_text"].iloc[0] - - # Limit to the top 5 entries based on rank - top_entries = df.nsmallest(5, "rank") - - # Build the section - context_entries = "\n".join( - f" \n {idx}\n {row['doc_text']}\n " - for idx, row in top_entries.iterrows() - ) - - # Combine everything into the final prompt - formatted_prompt = f""" - -{context_entries} - - - - {user_query} -""" - - return formatted_prompt - - -######################## -#### SYSTEM PROMPTS FOR DIFFERENT TASK TYPES: Classification -######################## - - -class ClassificationResponseModel(BaseModel): - classification: int = Field(description="Chosen ID of the best matching entry.", ge=-1) - - -######################## -#### FORMATTING FUNCTIONS THAT INTERPRET THE MODEL RAW RESPONSE, FORMATS, and APPLIES TO DF -######################## - - -def format_classification_output(generated_text, result: VectorStoreSearchOutput) -> VectorStoreSearchOutput: - # Parse the generated text - try: - response = json.loads(generated_text) - validated_response = ClassificationResponseModel(**response) - except (json.JSONDecodeError, ValueError): - # If parsing or validation fails, return the original DataFrame - return result - - # Extract the classification - classification = validated_response.classification - - # Validate the classification value is in the expected range - MIN_INDEX = 0 - MAX_INDEX = 4 - if int(classification) < MIN_INDEX or int(classification) > MAX_INDEX: - return result - - # Otherwise, filter to only keep the row with the classified doc_id - result = result.iloc[[classification]].reset_index(drop=True) - - return VectorStoreSearchOutput(result) - - -######################## -#### ACTUAL AGENT CODE -######################## - - -class GcpAgent(AgentBase): - def __init__( - self, - project_id: str, - location: str, - model_name: str = "gemini-3-flash-preview", - task_type: str = "classification", - ): - self.client = genai.Client( - vertexai=True, - project=project_id, - location=location, - http_options=HttpOptions(api_version="v1"), - ) - - # assign model name and vectorstore isntance - self.model_name = model_name - - # decide logic for classification or reranking - # if task_type == "reranking": - # self.system_prompt = RERANK_SYSTEM_PROMPT - # self.response_formatting_function = format_reranking_output - # self.response_schema = RERANK_RESPONSE_SCHEMA - if task_type == "classification": - self.system_prompt = CLASSIFICATION_SYSTEM_PROMPT - self.response_formatting_function = format_classification_output - self.response_schema = ClassificationResponseModel.model_json_schema() - - else: - raise ValueError( - f"Unsupported task_type: {task_type}. Current supported types are 'reranking' and 'classification'." - ) - - def transform(self, results: VectorStoreSearchOutput) -> VectorStoreSearchOutput: - # Group rows by query_id and process individually - grouped = list(results.groupby("query_id")) - all_results = [] - - # Iterate over each group (query_id) - for _, group in grouped: - # Create a prompt for the current query_id - prompt = format_prompt_with_retrieval_results(group) - - # Prompt the model with the single prompt - response = self.client.models.generate_content( - model=self.model_name, - contents=prompt, - config=GenerateContentConfig( - system_instruction=self.system_prompt, - response_mime_type="application/json", - response_schema=self.response_schema, - ), - ) - - # Process the response from the genai - formatted_result = self.response_formatting_function(response.text, group) - all_results.append(formatted_result) - - # Combine all results into the final DataFrame - final_results = pd.concat(all_results, ignore_index=True) - - return VectorStoreSearchOutput(final_results) diff --git a/src/classifai/indexers/main.py b/src/classifai/indexers/main.py index 54d8282..8f36fb6 100644 --- a/src/classifai/indexers/main.py +++ b/src/classifai/indexers/main.py @@ -13,7 +13,6 @@ - Support for CSV file format (additional formats may be added in future updates). - Integration with a custom embedder for generating vector embeddings. - Support for user-defined hooks for preprocessing and postprocessing. -- Integreates with an optional AI agent for classifying and transforming search results. - Logging for tracking progress and handling errors during processing. Dependencies: @@ -72,7 +71,6 @@ class VectorStore: file_name (str): the original file with the knowledgebase to build the vector store data_type (str): the data type of the original file (curently only csv supported) vectoriser (object): A Vectoriser object from the corresponding ClassifAI Pacakge module - agent (object): An optional generate AI agent from the ClassifAI Agents module to transform candidate classification search results batch_size (int): the batch size to pass to the vectoriser when embedding meta_data (dict[str:type]): key-value pairs of metadata to extract from the input file and their correpsonding types output_dir (str): the path to the output directory where the VectorStore will be saved @@ -88,7 +86,6 @@ def __init__( # noqa: C901, PLR0912, PLR0913, PLR0915 file_name, data_type, vectoriser, - agent=None, batch_size=8, meta_data=None, output_dir=None, @@ -103,7 +100,6 @@ def __init__( # noqa: C901, PLR0912, PLR0913, PLR0915 data_type (str): The type of input data (currently supports only "csv"). vectoriser (object): The vectoriser object used to transform text into vector embeddings. - agent (object): The generate AI agent used to transform candidate classification search results. batch_size (int, optional): The batch size for processing the input file and batching to vectoriser. Defaults to 8. meta_data (dict, optional): key,value pair metadata column names to extract from the input file and their types. @@ -154,7 +150,6 @@ def __init__( # noqa: C901, PLR0912, PLR0913, PLR0915 self.file_name = file_name self.data_type = data_type self.vectoriser = vectoriser - self.agent = agent if agent is not None else None self.batch_size = batch_size self.meta_data = meta_data if meta_data is not None else {} self.output_dir = output_dir @@ -706,15 +701,6 @@ def search(self, query: VectorStoreSearchInput, n_results=10, batch_size=8) -> V context={"hook": "search_postprocess", "cause_type": type(e).__name__, "cause_message": str(e)}, ) from e - # If an agent is defined, use it to transform the results, expecxts a VectorStoreSearchOutput object in return - if self.agent is not None: - agent_result_df = self.agent.transform(result_df) - - if not isinstance(agent_result_df, VectorStoreSearchOutput): - raise ValueError("Agent Prep did not succesfully return a VectorStoreSearchOutput object.") - - return agent_result_df - return result_df @classmethod From a6c2da94cb7b9cb42bef372848020fa0c5f96813 Mon Sep 17 00:00:00 2001 From: frayle-ons <194791647+frayle-ons@users.noreply.github.com> Date: Mon, 2 Mar 2026 18:49:35 +0000 Subject: [PATCH 4/5] added full implementation to end of demo notebook --- DEMO/generative_ai_classifier.ipynb | 254 ++++++++++++++++++++++++++-- 1 file changed, 244 insertions(+), 10 deletions(-) diff --git a/DEMO/generative_ai_classifier.ipynb b/DEMO/generative_ai_classifier.ipynb index 7c1343a..f25ca73 100644 --- a/DEMO/generative_ai_classifier.ipynb +++ b/DEMO/generative_ai_classifier.ipynb @@ -125,7 +125,7 @@ "from classifai.vectorisers import GcpVectoriser\n", "\n", "# Initialise the vectoriser\n", - "demo_vectoriser = GcpVectoriser(project_id=\"YOUR GCP PROJECT ID\", vertexai=True)\n", + "demo_vectoriser = GcpVectoriser(project_id=\"YOUR PROJECT ID HERE\", vertexai=True)\n", "\n", "\n", "# Initialise the vector store, pointing the demo to the demo test data\n", @@ -1017,7 +1017,7 @@ "from google.genai import types\n", "\n", "# Set up the API key for authentication\n", - "client = genai.Client(api_key=\"YOUR API KEY HERE\")\n", + "client = genai.Client(api_key=\"YOUR API KEY HERRE\")\n", "\n", "# Define the model to use\n", "chosen_model = \"gemini-2.5-flash\" # Replace with the appropriate Gemini Flash 2.5 model name if different\n", @@ -1136,8 +1136,7 @@ "from classifai.vectorisers import GcpVectoriser\n", "\n", "# Initialise the vectoriser\n", - "demo_vectoriser = GcpVectoriser(project_id=\"YOUR GCP PROJECT ID\", vertexai=True)\n", - "\n", + "demo_vectoriser = GcpVectoriser(project_id=\"YOUR PROJECT ID HERE\", vertexai=True)\n", "\n", "# Initialise the vector store, pointing the demo to the demo test data\n", "demo_vectorstore = VectorStore(\n", @@ -1191,9 +1190,11 @@ "source": [ "## That's it! We've walked through:\n", "\n", - "- Establishing connections to Google Generative AI models\n", - "- Configuring AI model input and output for Classification tasks and how models should behave\n", - "- Setting up pre- and post-processing functions to handle the model input and output\n", + "- Establishing connections to Google Generative AI models,\n", + "\n", + "- Configuring AI model input and output for Classification tasks and how models should behave,\n", + "\n", + "- Setting up pre- and post-processing functions to handle the model input and output.\n", "\n", "In this last part of this notebook (below) we provide a full code implementation for a VectorStore, and GenAI classifier hook, but here are some additional final points to consider:\n", "\n", @@ -1217,13 +1218,246 @@ "source": [ "The following code cells provide a complete implementation of the Generative AI RAG agent, (reimporting dependecies and reinitialising all variables)\n", "\n", - "In this version we provide one change with an _asyncronous_ version of the API calls to the genai client, to speed up the processing of queries." + "In this version we provide one key change with an _asyncronous_ version of the API calls to the genai client, to speed up the processing of queries. Note that ClassifAI does not currently support async code in hooks, therefore we nest our agent code in an outer syncronous function.\n", + "\n", + "`Warning:` To run this final section of the code you will need to execute it outside of the Notebook environments, as it contains async code that does not operate nicely within the Jupyter Notebook environment. We recommend exceuting in an external script with ClassifAI[gcp] installed in the environment." ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "metadata": {}, - "source": [] + "outputs": [], + "source": [ + "import asyncio\n", + "import json\n", + "\n", + "from google import genai\n", + "from google.genai import types\n", + "from pydantic import BaseModel, Field\n", + "\n", + "from classifai.indexers.dataclasses import VectorStoreSearchInput, VectorStoreSearchOutput\n", + "\n", + "\n", + "# thia function generates the system prompt for the classification task, it takes the number of candidate entries as input and returns a formatted string that includes instructions for the model on how to classify the user query based on the provided context. The prompt specifies the expected format of the input and output, and provides guidelines for how the model should prioritize the context when making its classification\n", + "def make_classification_system_prompt(n: int) -> str:\n", + " CLASSIFICATION_SYSTEM_PROMPT = \"\"\"You are an AI assistant designed to classify a user query based on the provided context. You will be provided with candidate entries retrieved from a knowledge base, each containing an ID and a text description. Your task is to analyze the user query and the text of the context entries to determine which of the entries best matches the user query.\n", + "\n", + " Guidelines:\n", + " 1. Always prioritize the provided context when making your classification.\n", + " 2. The context will be provided as an XML structure containing multiple entries. Each entry includes an ID and a text description.\n", + " 3. The IDs will be integer values from 1 to {n}, corresponding to the {n} candidate entries.\n", + " 4. Use the text of the entries to determine the most relevant classification for the user query.\n", + " 5. Your output must be a JSON object that adheres to the following schema:\n", + " - The JSON object must contain a single key, `classification`.\n", + " - The value of `classification` must be an integer between 1 and {n}, representing the ID of the best matching entry.\n", + " - If no classification can be determined due to ambiguity or insufficient information, the value of `classification` must be `-1`.\n", + "\n", + " Example of the required JSON output:\n", + " {{\n", + " 'classification': 1\n", + " }}\n", + "\n", + " The XML structure for the context and user query will be as follows:\n", + " \n", + " \n", + " 0\n", + " [Text from the first entry]\n", + " \n", + " \n", + " 1\n", + " [Text from the second entry]\n", + " \n", + " ...\n", + " \n", + " {n}\n", + " [Text from the fifth entry]\n", + " \n", + " \n", + "\n", + " \n", + " [The user query will be inserted here]\n", + " \n", + "\n", + " Your task is to analyze the context and the user query, and return the classification in the required structured format.\n", + " \"\"\"\n", + "\n", + " return CLASSIFICATION_SYSTEM_PROMPT.format(n=n)\n", + "\n", + "\n", + "# this function generates a Pydantic model for validating the model's response, it takes the number of candidate entries as input and returns a dynamically created Pydantic model class that includes a single field 'classification' which can be either -1 or an integer between 1 and n. This model is used to ensure that the response from the generative model adheres to the expected format and value constraints\n", + "def make_classification_model(n: int) -> type[BaseModel]:\n", + " if n < 1:\n", + " raise ValueError(\"n must be >= 1\")\n", + "\n", + " PositiveId = conint(ge=1, le=n) # type: ignore[valid-type]\n", + "\n", + " return create_model(\n", + " \"ClassificationResponseModel\",\n", + " classification=(\n", + " Literal[-1] | PositiveId,\n", + " Field(description=f\"-1 if unclassifiable, else an integer in [1, {n}] (no 0).\"),\n", + " ),\n", + " )\n", + "\n", + "\n", + "# this function convertes the VectorStoreSearchOutput to a formatted string that can be passed as a prompt to the generative model, it extracts the user query and the candidate entries and formats them into the required XML structure as specified in the system prompt\n", + "def format_prompt_with_vectorstore_results(results_df) -> str:\n", + " # Extract the user query (assuming all rows have the same query_id and query_text)\n", + " user_query = results_df[\"query_text\"].iloc[0]\n", + "\n", + " # Build the section\n", + " context_entries = \"\\n\".join(\n", + " f\" \\n {idx + 1}\\n {row['doc_text']}\\n \"\n", + " for idx, row in results_df.iterrows()\n", + " )\n", + "\n", + " # Combine everything into the final prompt\n", + " formatted_prompt = f\"\"\"\n", + "\n", + "{context_entries}\n", + "\n", + "\n", + "\n", + " {user_query}\n", + "\"\"\"\n", + "\n", + " return formatted_prompt\n", + "\n", + "\n", + "# this function takes the generative model's response and the original results dataframe, it attempts to parse and validate the model's response, and if successful it filters the original results dataframe to return only the row corresponding to the classification returned by the model. If parsing or validation fails, or if the classification is out of range, it returns the original results dataframe unfiltered\n", + "def format_agent_classification(\n", + " agent_generated_text: str, results_df: VectorStoreSearchOutput\n", + ") -> VectorStoreSearchOutput:\n", + " # Parse the generated text\n", + " try:\n", + " response = json.loads(agent_generated_text)\n", + " validation_model = make_classification_model(n=results_df.shape[0])\n", + " validated_response = validation_model(**response)\n", + " except (json.JSONDecodeError, ValueError):\n", + " # If parsing or validation fails, return the original DataFrame\n", + " return results_df\n", + "\n", + " # Extract the classification\n", + " classification = validated_response.classification\n", + "\n", + " # Validate the classification value is in the expected range\n", + " MIN_INDEX = 1\n", + " MAX_INDEX = len(results_df)\n", + " if int(classification) < MIN_INDEX or int(classification) > MAX_INDEX:\n", + " return results_df\n", + "\n", + " # Otherwise, filter to only keep the row with the classified doc_id, adjusting for 1-based 0-indexing in the classification\n", + " result = results_df.iloc[[classification - 1]].reset_index(drop=True)\n", + "\n", + " return VectorStoreSearchOutput(result)\n", + "\n", + "\n", + "# herre we restart a client instance to ensure we have access to the async interface, as per the SDK documentation you shared, we should create a new client instance for the async code and then close it after use to avoid any potential issues with reusing the same client instance across sync and async code\n", + "client = genai.Client(api_key=\"YOUR API KEY HERE\")\n", + "chosen_model = \"gemini-2.5-flash\" # could use another model here if desired, for example a gemini-3 variant\n", + "MAX_CONCURRENCY = 8\n", + "\n", + "\n", + "# this function is an async version of the classification function for a single query group, it takes the async client, the results dataframe for a single query, and a semaphore to limit concurrency. It formats the prompt, sends the request to the model, and returns the classified result\n", + "async def _classify_result(\n", + " aclient,\n", + " result: VectorStoreSearchOutput,\n", + " sem: asyncio.Semaphore,\n", + ") -> VectorStoreSearchOutput:\n", + " group = result.head(5)\n", + " prompt = format_prompt_with_vectorstore_results(group)\n", + " n = group.shape[0]\n", + "\n", + " async with sem:\n", + " response = await aclient.models.generate_content(\n", + " model=chosen_model,\n", + " contents=prompt,\n", + " config=types.GenerateContentConfig(\n", + " system_instruction=make_classification_system_prompt(n=n),\n", + " response_mime_type=\"application/json\",\n", + " response_json_schema=make_classification_model(n=n).model_json_schema(),\n", + " ),\n", + " )\n", + "\n", + " return format_agent_classification(response.text, group)\n", + "\n", + "\n", + "# this funcion is the main async function that orchestrates the classification of the results, it groups the results by query, creates async tasks for each group, and gathers the results. Finally, it concatenates the classified results and returns them wrapped in the VectorStoreSearchOutput class\n", + "async def rag_classifier_async(\n", + " input_data: VectorStoreSearchOutput,\n", + ") -> VectorStoreSearchOutput:\n", + " # first our result df might have multiple queries in it, so we want to group by query_id and query_text to ensure we classify each unique query separately\n", + " per_query = [group for _, group in input_data.groupby([\"query_id\"])]\n", + "\n", + " # This is the SDK-provided async interface\n", + " aclient = client.aio\n", + " sem = asyncio.Semaphore(MAX_CONCURRENCY)\n", + "\n", + " try:\n", + " tasks = [_classify_result(aclient, group, sem) for group in per_query]\n", + " classified_results = await asyncio.gather(*tasks)\n", + " finally:\n", + " # Important per the SDK docs/snippet you pasted\n", + " await aclient.aclose()\n", + "\n", + " # we convert the results to a single dataframe\n", + " final_result = pd.concat(classified_results).reset_index(drop=True)\n", + " return VectorStoreSearchOutput(final_result)\n", + "\n", + "\n", + "# this function is a simple wrapper around the async classification function to allow it to be used as a hook in the VectorStore, it runs the async function using asyncio.run and returns the result\n", + "def rag_hook(input_data: VectorStoreSearchOutput) -> VectorStoreSearchOutput:\n", + " return asyncio.run(rag_classifier_async(input_data))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from classifai.indexers import VectorStore\n", + "from classifai.vectorisers import GcpVectoriser\n", + "\n", + "# We instantiate a vectoriser (we could use any Vectoriser from ClassifAI here, but we'll use the GCP one to keep it consistent with the rest of the demo)\n", + "imp_vectoriser = GcpVectoriser(project_id=\"YOUR GCP PROJECT ID HERE\", vertexai=True)\n", + "\n", + "\n", + "# Build the vectorstore which points to the demo data and includes the RAG classification hook in the search_postprocess step, this means that every time we call search on this vectorstore, after it retrieves the candidate entries it will pass them to the rag_hook function which will classify the results using the Gemini model before returning them\n", + "imp_vectorstore = VectorStore(\n", + " file_name=\"./data/fake_soc_dataset.csv\",\n", + " data_type=\"csv\",\n", + " vectoriser=imp_vectoriser,\n", + " output_dir=\"./demo_vdb\",\n", + " overwrite=True,\n", + " hooks={\"search_postprocess\": rag_hook},\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create a new demo input dataframe to showcase the RAG classification being performed asynchronously.\n", + "imp_search_input = VectorStoreSearchInput(\n", + " {\n", + " \"id\": [\"1\", \"2\", \"3\", \"4\", \"5\"],\n", + " \"query\": [\n", + " \"a photographer hired for wedding events\",\n", + " \"Tax expert advisor\",\n", + " \"farmer of potatoes\",\n", + " \"Tax expert advisor\",\n", + " \"farmer of potatoes\",\n", + " ],\n", + " }\n", + ")\n", + "\n", + "# finally run the VectorStore search method which will call the RAG classification hook we have defined on the search results\n", + "imp_vectorstore.search(imp_search_input, n_results=5)" + ] } ], "metadata": { From 20e62c0e7de47e723d05102eb19663cb3bbca2c8 Mon Sep 17 00:00:00 2001 From: frayle-ons <194791647+frayle-ons@users.noreply.github.com> Date: Tue, 3 Mar 2026 14:00:54 +0000 Subject: [PATCH 5/5] scoring updates --- DEMO/files/agent_classification.png | Bin 0 -> 77997 bytes DEMO/files/e2e_genai_hook.png | Bin 0 -> 173636 bytes DEMO/files/human_in_the_loop.png | Bin 0 -> 69129 bytes DEMO/files/scoring_threshold.png | Bin 0 -> 77230 bytes DEMO/files/vectorstore_search.png | Bin 0 -> 50516 bytes DEMO/generative_ai_classifier.ipynb | 44 ++++++++++++++++++++-------- 6 files changed, 32 insertions(+), 12 deletions(-) create mode 100644 DEMO/files/agent_classification.png create mode 100644 DEMO/files/e2e_genai_hook.png create mode 100644 DEMO/files/human_in_the_loop.png create mode 100644 DEMO/files/scoring_threshold.png create mode 100644 DEMO/files/vectorstore_search.png diff --git a/DEMO/files/agent_classification.png b/DEMO/files/agent_classification.png new file mode 100644 index 0000000000000000000000000000000000000000..ed631e261d1e2a8130533b879f40b9e3044dd17c GIT binary patch literal 77997 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 M3hMIJvgRTG2F9YNV*mgE literal 0 HcmV?d00001 diff --git a/DEMO/files/e2e_genai_hook.png b/DEMO/files/e2e_genai_hook.png new file mode 100644 index 0000000000000000000000000000000000000000..162e94abb35294b39e1db7ac13b69e99033ed68d GIT binary patch literal 173636 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

3ZjP2{p9m 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

kLeKOUwUh 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 literal 0 HcmV?d00001 diff --git a/DEMO/files/human_in_the_loop.png b/DEMO/files/human_in_the_loop.png new file mode 100644 index 0000000000000000000000000000000000000000..629abcd7672000916e71909eb1dc171d1e3e1347 GIT binary patch literal 69129 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�)nXkGJD5K$T;FGt9bJJ8JSaQdN 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 mXY>B*jQ#gj5!VzRhm literal 0 HcmV?d00001 diff --git a/DEMO/files/scoring_threshold.png b/DEMO/files/scoring_threshold.png new file mode 100644 index 0000000000000000000000000000000000000000..6f23804067604df46a020ee4a33474bde36b1833 GIT binary patch literal 77230 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 literal 0 HcmV?d00001 diff --git a/DEMO/files/vectorstore_search.png b/DEMO/files/vectorstore_search.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc40a758bdac57f52778ad6a7b34e654fecfc6c GIT binary patch literal 50516 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 gYR+CS14tD=(5$wue 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 z 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 z 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\n", + " \"Strategy\n", + " \"Strategy\n", + " \"Strategy\n", + "\n", + "\n", + "\n" ] }, { @@ -55,7 +61,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "(!IMAGE OF GENAI CLASSIFIER CONCEPT)" + "![Geneerative AI Schematic](./files/e2e_genai_hook.png)" ] }, { @@ -179,7 +185,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "(!IMAGE OF END TO END VECTOR SEARCH)" + "![ClassifAI Search Diagram](./files/vectorstore_search_dataflow.svg)" ] }, { @@ -586,11 +592,11 @@ ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "metadata": {}, - "source": [ - "(!HOOK CONCEPT IMAGE GOES HERE FROM HOOK NOTEBOOK)" - ] + "outputs": [], + "source": [] }, { "cell_type": "markdown", @@ -610,6 +616,20 @@ "Finally *Hooks* allow users of the package to write custom functions that modify the data in the dataclass objects at certain points in the package codebase - before and after a specific method is called. Hooks can apply any user-defined operation on a specific dataclass object, as long as they return a valid dataclass object of the same kind. For example, users could write a spell-checking function that corrects the text of queries input to the search method. See example hooks int he demo notebook referenced in the previous cells for implementation examples." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below is an illustration of how a `VectorStoreSearchInput` object can be transformed in a 'remove punctuation' hook. Note that the column names and content of the dataframe remains consistent.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![ClassifAI Search Diagram](./files/vectorstore_search_dataflow.svg)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -695,16 +715,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "(!DIAGRAM OF GENAI RAG CLASSIFIER IN HOOK IN CLASSIFAI)" + "We plan to add our generative AI model in a post processsing hook to interact with search results and determine a final result.\n", + "\n", + "For this we will need to format the results data as a text prompt for the model, provide the model with instructions on how to do the classificatiin task and what format to output its prediction. Then we will also need to add additional logic to reduce the original dataframe down to a final classification based on the Generative model's output classificaiton." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We plan to add our generative AI model in a post processsing hook to interact with search results and determine a final result.\n", - "\n", - "For this we will need to format the results data as a text prompt for the model, provide the model with instructions on how to do the classificatiin task and what format to output its prediction. Then we will also need to add additional logic to reduce the original dataframe down to a final classification based on the Generative model's output classificaiton." + "![Geneerative AI Schematic](./files/e2e_genai_hook.png)" ] }, {