📁 File Manager Pro
v10.0.3 | PHP: 8.2.31
Server: LiteSpeed
2026-06-28 17:03:38
📂
/ (Root)
/
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
sentry_sdk
/
ai
📍 /opt/hc_python/lib/python3.12/site-packages/sentry_sdk/ai
🔄 Refresh
✏️
Editing: _openai_completions_api.py
Read Only
from collections.abc import Iterable from typing import TYPE_CHECKING if TYPE_CHECKING: from typing import Union from openai.types.chat import ( ChatCompletionContentPartParam, ChatCompletionMessageParam, ChatCompletionSystemMessageParam, ) from sentry_sdk._types import TextPart def _is_system_instruction(message: "ChatCompletionMessageParam") -> bool: return isinstance(message, dict) and message.get("role") == "system" def _get_system_instructions( messages: "Iterable[ChatCompletionMessageParam]", ) -> "list[ChatCompletionMessageParam]": if not isinstance(messages, Iterable): return [] return [message for message in messages if _is_system_instruction(message)] def _get_text_items( content: "Union[str, Iterable[ChatCompletionContentPartParam]]", ) -> "list[str]": if isinstance(content, str): return [content] if not isinstance(content, Iterable): return [] text_items = [] for part in content: if isinstance(part, dict) and part.get("type") == "text": text = part.get("text", None) if text is not None: text_items.append(text) return text_items def _transform_system_instructions( system_instructions: "list[ChatCompletionSystemMessageParam]", ) -> "list[TextPart]": instruction_text_parts: "list[TextPart]" = [] for instruction in system_instructions: if not isinstance(instruction, dict): continue content = instruction.get("content") if content is None: continue text_parts: "list[TextPart]" = [ {"type": "text", "content": text} for text in _get_text_items(content) ] instruction_text_parts += text_parts return instruction_text_parts
💾 Save Changes
❌ Cancel