aidial_adapter_vertexai/chat/gemini/prompt/gemini_1_0_pro.py (42 lines of code) (raw):
from typing import List, Self
from aidial_sdk.chat_completion import Message
from aidial_adapter_vertexai.chat.errors import UserError, ValidationError
from aidial_adapter_vertexai.chat.gemini.conversation_factory import (
ConversationFactory,
)
from aidial_adapter_vertexai.chat.gemini.inputs import (
messages_to_gemini_conversation,
)
from aidial_adapter_vertexai.chat.gemini.processor import AttachmentProcessors
from aidial_adapter_vertexai.chat.gemini.prompt.base import GeminiPrompt
from aidial_adapter_vertexai.chat.static_tools import StaticToolsConfig
from aidial_adapter_vertexai.chat.tools import ToolsConfig
class Gemini_1_0_Pro_Prompt(GeminiPrompt):
@classmethod
async def parse(
cls,
tools: ToolsConfig,
static_tools: StaticToolsConfig,
messages: List[Message],
) -> Self | UserError:
if len(messages) == 0:
raise ValidationError(
"The chat history must have at least one message"
)
conversation_factory = ConversationFactory()
processors = AttachmentProcessors(
conversation_factory=conversation_factory,
processors=[],
file_storage=None,
)
conversation = await messages_to_gemini_conversation(
conversation_factory, processors, tools, messages
)
if error_message := processors.get_error_message():
return UserError(error_message, error_message)
return cls(
system_instruction=conversation.system_instruction,
contents=conversation.contents,
tools=tools,
static_tools=static_tools,
)