def recorder_add_llm_request_event(
request_body: LlmRequestBody,
event_id: str
):
skip_attributes = (
'stream',
'response_format',
'messages',
)
event_attributes = []
for key, value in request_body.model_dump().items():
if key not in skip_attributes:
event_attributes.append(
EventAttribute(
key=key,
value=str(value)
)
)
llm_request_event = Event(
id=event_id,
object_name=_EVENT_OBJECT_NAME,
callable_name='Request',
type=EventType.REQUEST,
token_usage=request_body.estimated_token_count,
attributes=[
*event_attributes,
EventAttribute(
key='JSON Schema',
value=json.dumps(request_body.json_schema, indent=4),
is_dropdown=True,
)
]
)
for message in request_body.messages:
for message_content in message.content:
llm_request_event.add_attribute(
key=message.role,
value=str(message_content.text),
is_card=True,
)
Recorder.add_event(llm_request_event)