diff --git a/llama-index-integrations/readers/llama-index-readers-box/llama_index/readers/box/BoxAPI/box_ai_extract_beta.py b/llama-index-integrations/readers/llama-index-readers-box/llama_index/readers/box/BoxAPI/box_ai_extract_beta.py deleted file mode 100644 index 019b6f9bbcb6f..0000000000000 --- a/llama-index-integrations/readers/llama-index-readers-box/llama_index/readers/box/BoxAPI/box_ai_extract_beta.py +++ /dev/null @@ -1,107 +0,0 @@ -from enum import Enum - -from typing import Optional - -from box_sdk_gen.internal.base_object import BaseObject - -from typing import List - -from typing import Dict - -from box_sdk_gen.serialization.json.serializer import serialize - -from box_sdk_gen.serialization.json.serializer import deserialize - -from box_sdk_gen.schemas.ai_response import AiResponse - -from box_sdk_gen.networking.auth import Authentication - -from box_sdk_gen.networking.network import NetworkSession - -from box_sdk_gen.internal.utils import prepare_params - -from box_sdk_gen.networking.fetch import FetchOptions - -from box_sdk_gen.networking.fetch import FetchResponse - -from box_sdk_gen.networking.fetch import fetch - - -class CreateAiExtractItemsTypeField(str, Enum): - FILE = "file" - - -class CreateAiExtractItems(BaseObject): - _discriminator = "type", {"file"} - - def __init__( - self, - id: str, - *, - type: CreateAiExtractItemsTypeField = CreateAiExtractItemsTypeField.FILE.value, - content: Optional[str] = None, - **kwargs, - ): - """ - :param id: The id of the item. - :type id: str - :param type: The type of the item., defaults to CreateAiAskItemsTypeField.FILE.value - :type type: CreateAiAskItemsTypeField, optional - :param content: The content of the item, often the text representation., defaults to None - :type content: Optional[str], optional - """ - super().__init__(**kwargs) - self.id = id - self.type = type - self.content = content - - -class AiExtractManager: - def __init__( - self, - *, - auth: Optional[Authentication] = None, - network_session: NetworkSession = None, - ): - if network_session is None: - network_session = NetworkSession() - self.auth = auth - self.network_session = network_session - - def create_ai_extract( - self, - prompt: str, - items: List[CreateAiExtractItems], - *, - extra_headers: Optional[Dict[str, Optional[str]]] = None, - ) -> AiResponse: - """ - Sends an AI request to supported LLMs and returns an answer specifically focused on the user's data structure given the provided context. - :param prompt: The prompt provided by the client to be answered by the LLM. The prompt's length is limited to 10000 characters. - :type prompt: str - :param items: The items to be processed by the LLM, often files. - - **Note**: Box AI handles documents with text representations up to 1MB in size, or a maximum of 25 files, whichever comes first. - If the file size exceeds 1MB, the first 1MB of text representation will be processed. - If you set `mode` parameter to `single_item_qa`, the `items` array can have one element only. - :type items: List[CreateAiAskItems] - :param extra_headers: Extra headers that will be included in the HTTP request., defaults to None - :type extra_headers: Optional[Dict[str, Optional[str]]], optional - """ - if extra_headers is None: - extra_headers = {} - request_body: Dict = {"prompt": prompt, "items": items} - headers_map: Dict[str, str] = prepare_params({**extra_headers}) - response: FetchResponse = fetch( - f"{self.network_session.base_urls.base_url}/2.0/ai/extract", - FetchOptions( - method="POST", - headers=headers_map, - data=serialize(request_body), - content_type="application/json", - response_format="json", - auth=self.auth, - network_session=self.network_session, - ), - ) - return deserialize(response.data, AiResponse) diff --git a/llama-index-integrations/readers/llama-index-readers-box/llama_index/readers/box/BoxAPI/box_api.py b/llama-index-integrations/readers/llama-index-readers-box/llama_index/readers/box/BoxAPI/box_api.py index 68c3f441d4767..a864c19e21da0 100644 --- a/llama-index-integrations/readers/llama-index-readers-box/llama_index/readers/box/BoxAPI/box_api.py +++ b/llama-index-integrations/readers/llama-index-readers-box/llama_index/readers/box/BoxAPI/box_api.py @@ -1,27 +1,27 @@ +import logging import os import shutil -from typing import List, Optional, Dict -import logging +from typing import Dict, List, Optional + import requests from box_sdk_gen import ( + AiItemBase, BoxAPIError, BoxClient, - File, - ByteStream, BoxSDKError, -) -from box_sdk_gen.managers.search import ( - SearchForContentScope, + ByteStream, + CreateAiAskMode, + File, SearchForContentContentTypes, + SearchForContentScope, SearchForContentType, SearchResults, ) -from box_sdk_gen.managers.ai import CreateAiAskMode, CreateAiAskItems -from llama_index.readers.box.BoxAPI.box_ai_extract_beta import ( - AiExtractManager, - CreateAiExtractItems, -) +# from llama_index.readers.box.BoxAPI.box_ai_extract_beta import ( +# AiExtractManager, +# CreateAiExtractItems, +# ) logger = logging.getLogger(__name__) @@ -201,7 +201,7 @@ def get_ai_response_from_box_files( if individual_document_prompt: mode = CreateAiAskMode.SINGLE_ITEM_QA for file in box_files: - ask_item = CreateAiAskItems(file.id) + ask_item = AiItemBase(file.id) logger.info(f"Getting AI prompt for file: {file.id} {file.name}") # get the AI prompt for the file @@ -220,7 +220,7 @@ def get_ai_response_from_box_files( else: mode = CreateAiAskMode.MULTIPLE_ITEM_QA - file_ids = [CreateAiAskItems(file.id) for file in box_files] + file_ids = [AiItemBase(file.id) for file in box_files] # get the AI prompt for the file ai_response = box_client.ai.create_ai_ask( @@ -353,17 +353,13 @@ def get_files_ai_extract_data( Raises: BoxAPIError: If an error occurs while interacting with the Box AI API. """ - ai_extract_manager = AiExtractManager( - auth=box_client.auth, network_session=box_client.network_session - ) - for file in box_files: - ask_item = CreateAiExtractItems(file.id) + ask_item = AiItemBase(file.id) logger.info(f"Getting AI extracted data for file: {file.id} {file.name}") # get the AI extracted data for the file try: - ai_response = ai_extract_manager.create_ai_extract( + ai_response = box_client.ai.create_ai_extract( prompt=ai_prompt, items=[ask_item] ) except BoxAPIError as e: @@ -484,3 +480,6 @@ def search_files_by_metadata( # return only files from the entries return [file for file in search_results.entries if file.type == "file"] + + # return only files from the entries + return [file for file in search_results.entries if file.type == "file"] diff --git a/llama-index-integrations/readers/llama-index-readers-box/pyproject.toml b/llama-index-integrations/readers/llama-index-readers-box/pyproject.toml index a71aaa78a7362..12ea10aa0a280 100644 --- a/llama-index-integrations/readers/llama-index-readers-box/pyproject.toml +++ b/llama-index-integrations/readers/llama-index-readers-box/pyproject.toml @@ -37,11 +37,11 @@ maintainers = [ name = "llama-index-readers-box" packages = [{include = "llama_index/"}] readme = "README.md" -version = "0.2.2" +version = "0.2.3" [tool.poetry.dependencies] python = ">=3.8.1,<4.0" -box-sdk-gen = ">=1.0.0,<1.5.0" +box-sdk-gen = ">=1.5.0" llama-index-core = "^0.11.0" [tool.poetry.group.dev.dependencies] diff --git a/llama-index-integrations/tools/llama-index-tools-box/pyproject.toml b/llama-index-integrations/tools/llama-index-tools-box/pyproject.toml index bca3f8c6c89bd..d93cb831c6e4d 100644 --- a/llama-index-integrations/tools/llama-index-tools-box/pyproject.toml +++ b/llama-index-integrations/tools/llama-index-tools-box/pyproject.toml @@ -34,11 +34,11 @@ license = "MIT" name = "llama-index-tools-box" packages = [{include = "llama_index/"}] readme = "README.md" -version = "0.2.1" +version = "0.2.3" [tool.poetry.dependencies] python = ">=3.8.1,<4.0" -box-sdk-gen = "^1.1.0" +box-sdk-gen = ">=1.5.0" llama-index-readers-box = "^0.2.0" llama-index-agent-openai = "^0.3.0" llama-index-core = "^0.11.0" diff --git a/llama-index-integrations/tools/llama-index-tools-box/tests/test_tools_box_ai_extract.py b/llama-index-integrations/tools/llama-index-tools-box/tests/test_tools_box_ai_extract.py index dab8aadd64852..21af532186f2e 100644 --- a/llama-index-integrations/tools/llama-index-tools-box/tests/test_tools_box_ai_extract.py +++ b/llama-index-integrations/tools/llama-index-tools-box/tests/test_tools_box_ai_extract.py @@ -1,9 +1,8 @@ -import pytest import openai +import pytest from box_sdk_gen import BoxClient - -from llama_index.tools.box import BoxAIExtractToolSpec from llama_index.agent.openai import OpenAIAgent +from llama_index.tools.box import BoxAIExtractToolSpec from tests.conftest import get_testing_data diff --git a/llama-index-integrations/tools/llama-index-tools-box/tests/test_tools_box_ai_prompt.py b/llama-index-integrations/tools/llama-index-tools-box/tests/test_tools_box_ai_prompt.py index 67d8cac469320..3e433d3d345bd 100644 --- a/llama-index-integrations/tools/llama-index-tools-box/tests/test_tools_box_ai_prompt.py +++ b/llama-index-integrations/tools/llama-index-tools-box/tests/test_tools_box_ai_prompt.py @@ -1,9 +1,7 @@ import pytest from box_sdk_gen import BoxClient - -from llama_index.tools.box import BoxAIPromptToolSpec from llama_index.agent.openai import OpenAIAgent - +from llama_index.tools.box import BoxAIPromptToolSpec from tests.conftest import get_testing_data