MCPcopy
hub / github.com/openai/openai-python / accumulate_event

Function accumulate_event

src/openai/lib/streaming/_assistants.py:922–977  ·  view source on GitHub ↗

Returns a tuple of message snapshot and newly created text message deltas

(
    *,
    event: AssistantStreamEvent,
    current_message_snapshot: Message | None,
)

Source from the content-addressed store, hash-verified

920
921
922def accumulate_event(
923 *,
924 event: AssistantStreamEvent,
925 current_message_snapshot: Message | None,
926) -> tuple[Message | None, list[MessageContentDelta]]:
927 """Returns a tuple of message snapshot and newly created text message deltas"""
928 if event.event == "thread.message.created":
929 return event.data, []
930
931 new_content: list[MessageContentDelta] = []
932
933 if event.event != "thread.message.delta":
934 return current_message_snapshot, []
935
936 if not current_message_snapshot:
937 raise RuntimeError("Encountered a message delta with no previous snapshot")
938
939 data = event.data
940 if data.delta.content:
941 for content_delta in data.delta.content:
942 try:
943 block = current_message_snapshot.content[content_delta.index]
944 except IndexError:
945 current_message_snapshot.content.insert(
946 content_delta.index,
947 cast(
948 MessageContent,
949 construct_type(
950 # mypy doesn't allow Content for some reason
951 type_=cast(Any, MessageContent),
952 value=model_dump(content_delta, exclude_unset=True, warnings=False),
953 ),
954 ),
955 )
956 new_content.append(content_delta)
957 else:
958 merged = accumulate_delta(
959 cast(
960 "dict[object, object]",
961 model_dump(block, exclude_unset=True, warnings=False),
962 ),
963 cast(
964 "dict[object, object]",
965 model_dump(content_delta, exclude_unset=True, warnings=False),
966 ),
967 )
968 current_message_snapshot.content[content_delta.index] = cast(
969 MessageContent,
970 construct_type(
971 # mypy doesn't allow Content for some reason
972 type_=cast(Any, MessageContent),
973 value=merged,
974 ),
975 )
976
977 return current_message_snapshot, new_content
978
979

Callers 2

_emit_sse_eventMethod · 0.85
_emit_sse_eventMethod · 0.85

Calls 4

construct_typeFunction · 0.85
model_dumpFunction · 0.85
accumulate_deltaFunction · 0.70
appendMethod · 0.45

Tested by

no test coverage detected