|
| 1 | +from box_sdk_gen.internal.utils import to_string |
| 2 | + |
| 3 | +from typing import Optional |
| 4 | + |
| 5 | +from box_sdk_gen.schemas.ai_single_agent_response_full import AiSingleAgentResponseFull |
| 6 | + |
| 7 | +from box_sdk_gen.schemas.ai_studio_agent_ask import AiStudioAgentAsk |
| 8 | + |
| 9 | +from box_sdk_gen.schemas.ai_multiple_agent_response import AiMultipleAgentResponse |
| 10 | + |
| 11 | +from box_sdk_gen.schemas.file_full import FileFull |
| 12 | + |
| 13 | +from box_sdk_gen.schemas.ai_response_full import AiResponseFull |
| 14 | + |
| 15 | +from box_sdk_gen.managers.ai import CreateAiAskMode |
| 16 | + |
| 17 | +from box_sdk_gen.schemas.ai_item_ask import AiItemAsk |
| 18 | + |
| 19 | +from box_sdk_gen.schemas.ai_item_ask import AiItemAskTypeField |
| 20 | + |
| 21 | +from box_sdk_gen.box.developer_token_auth import BoxDeveloperTokenAuth |
| 22 | + |
| 23 | +from box_sdk_gen.client import BoxClient |
| 24 | + |
| 25 | +from test.box_sdk_gen.test.commons import get_default_client |
| 26 | + |
| 27 | +from test.box_sdk_gen.test.commons import upload_new_file |
| 28 | + |
| 29 | +from box_sdk_gen.internal.utils import get_uuid |
| 30 | + |
| 31 | +from box_sdk_gen.schemas.ai_agent_reference import AiAgentReference |
| 32 | + |
| 33 | +client: BoxClient = get_default_client() |
| 34 | + |
| 35 | + |
| 36 | +def testAiStudioCRUD(): |
| 37 | + agent_name: str = get_uuid() |
| 38 | + created_agent: AiSingleAgentResponseFull = client.ai_studio.create_ai_agent( |
| 39 | + agent_name, |
| 40 | + 'enabled', |
| 41 | + ask=AiStudioAgentAsk(access_state='enabled', description='desc1'), |
| 42 | + ) |
| 43 | + assert created_agent.name == agent_name |
| 44 | + agents: AiMultipleAgentResponse = client.ai_studio.get_ai_agents() |
| 45 | + num_agents: int = len(agents.entries) |
| 46 | + assert to_string(agents.entries[0].type) == 'ai_agent' |
| 47 | + retrieved_agent: AiSingleAgentResponseFull = client.ai_studio.get_ai_agent_by_id( |
| 48 | + created_agent.id, fields=['ask'] |
| 49 | + ) |
| 50 | + assert retrieved_agent.name == agent_name |
| 51 | + assert to_string(retrieved_agent.access_state) == 'enabled' |
| 52 | + assert to_string(retrieved_agent.ask.access_state) == 'enabled' |
| 53 | + assert retrieved_agent.ask.description == 'desc1' |
| 54 | + updated_agent: AiSingleAgentResponseFull = client.ai_studio.update_ai_agent_by_id( |
| 55 | + created_agent.id, |
| 56 | + agent_name, |
| 57 | + 'enabled', |
| 58 | + ask=AiStudioAgentAsk(access_state='disabled', description='desc2'), |
| 59 | + ) |
| 60 | + assert to_string(updated_agent.access_state) == 'enabled' |
| 61 | + assert to_string(updated_agent.ask.access_state) == 'disabled' |
| 62 | + assert updated_agent.ask.description == 'desc2' |
| 63 | + client.ai_studio.delete_ai_agent_by_id(created_agent.id) |
| 64 | + agents_after_delete: AiMultipleAgentResponse = client.ai_studio.get_ai_agents() |
| 65 | + assert len(agents_after_delete.entries) == num_agents - 1 |
| 66 | + |
| 67 | + |
| 68 | +def testUseAIAgentReferenceInAIAsk(): |
| 69 | + agent_name: str = get_uuid() |
| 70 | + created_agent: AiSingleAgentResponseFull = client.ai_studio.create_ai_agent( |
| 71 | + agent_name, |
| 72 | + 'enabled', |
| 73 | + ask=AiStudioAgentAsk(access_state='enabled', description='desc1'), |
| 74 | + ) |
| 75 | + file_to_ask: FileFull = upload_new_file() |
| 76 | + response: Optional[AiResponseFull] = client.ai.create_ai_ask( |
| 77 | + CreateAiAskMode.SINGLE_ITEM_QA, |
| 78 | + 'which direction sun rises', |
| 79 | + [ |
| 80 | + AiItemAsk( |
| 81 | + id=file_to_ask.id, |
| 82 | + type=AiItemAskTypeField.FILE, |
| 83 | + content='Sun rises in the East', |
| 84 | + ) |
| 85 | + ], |
| 86 | + ai_agent=AiAgentReference(id=created_agent.id), |
| 87 | + ) |
| 88 | + assert 'East' in response.answer |
| 89 | + assert response.completion_reason == 'done' |
| 90 | + assert len(response.ai_agent_info.models) > 0 |
| 91 | + client.files.delete_file_by_id(file_to_ask.id) |
| 92 | + client.ai_studio.delete_ai_agent_by_id(created_agent.id) |
0 commit comments