#24516 Bug: OpenTelemetry callback crashes on Usage AI chat due to non-dict `response_obj`
### Summary When using the Usage dashboard AI chat feature with OpenTelemetry enabled, the request may complete but the OpenTelemetry success logging path crashes afterward.
The OpenTelemetry integration appears to assume `response_obj` is always a dict-like object and calls `.get(...)` on it. In this flow, `response_obj` can be a `list`, which causes the logging callback to fail.
There is also a secondary issue where `gen_ai.system` is sometimes set to `None`, which OpenTelemetry rejects because attributes must be a supported primitive type.
### Expected behavior OpenTelemetry logging should not crash regardless of the shape of `response_obj`.
If `response_obj` is not dict-like, the callback should safely skip dict-specific fields or normalize the value before logging.
### Actual behavior The OpenTelemetry callback throws errors such as:
```text AttributeError: 'list' object has no attribute 'get' ```
and:
```text Invalid type NoneType for attribute 'gen_ai.system' value ```
### Example errors ```text OpenTelemetry logging error in set_attributes 'list' object has no attribute 'get' ```
```text AttributeError: 'list' object has no attribute 'get' ```
```text Invalid typ…