def process_prompt_to_intel(
self,
prompt: PromptOrStr,
intel_class: Union[Type[IntelType], None] = None,
intel_object: Union[IntelType, None] = None,
images: Union[List[str], None] = None,
include_fields: Union[IncEx, None] = None,
exclude_fields: Union[IncEx, None] = None,
system_prompt: PromptOrStrOrNone = None,
message_history: Union[MessageHistory, None] = None,
) -> IntelType:
if intel_class and intel_object:
raise LlmCriticalException('Cannot specify both intel_class and intel_object.')
if intel_class is None and intel_object is None:
raise LlmCriticalException('Must specify either intel_class or intel_object.')
self._intel = intel_class or intel_object
self._intel_json_schema = IntelFactory.intel_to_json_inc_ex_schema(
intel=self._intel,
include=include_fields,
exclude=exclude_fields
)
self._request_body.set_format_to_json_schema(
self._intel_json_schema
)
self._request_body.add_message(
role='system',
content=service_system_prompt(
system_prompt=system_prompt
).to_str()
)
if message_history:
for message in message_history.messages:
self._request_body.add_message(
role=message.role,
content=message.content,
images=message.images
)
self._request_body.add_message(
role='user',
content=service_user_prompt(
prompt if isinstance(prompt, Prompt) else Prompt(prompt)
).to_str(),
images=images,
)
return self._process_request_to_intel()