diff --git a/.cz.toml b/.cz.toml index 88cfc8cf63..864685849d 100644 --- a/.cz.toml +++ b/.cz.toml @@ -62,6 +62,8 @@ version_files = [ "packages/opentelemetry-instrumentation-weaviate/opentelemetry/instrumentation/weaviate/version.py", "packages/opentelemetry-instrumentation-llamaindex/pyproject.toml:^version", "packages/opentelemetry-instrumentation-llamaindex/opentelemetry/instrumentation/llamaindex/version.py", + "packages/opentelemetry-instrumentation-writer/pyproject.toml:^version", + "packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/version.py", "packages/traceloop-sdk/pyproject.toml:^version", "packages/traceloop-sdk/traceloop/sdk/version.py", ] diff --git a/README.md b/README.md index 55193da1af..361c78d95c 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,7 @@ OpenLLMetry can instrument everything that [OpenTelemetry already instruments](h - ✅ [Together AI](https://together.xyz/) - ✅ [Aleph Alpha](https://www.aleph-alpha.com/) - ✅ [Groq](https://groq.com/) +- ✅ [WRITER](https://writer.com/) ### Vector DBs diff --git a/packages/opentelemetry-instrumentation-writer/.flake8 b/packages/opentelemetry-instrumentation-writer/.flake8 new file mode 100644 index 0000000000..3da962c38e --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/.flake8 @@ -0,0 +1,11 @@ +[flake8] +exclude = + .git, + __pycache__, + build, + dist, + .tox, + venv, + .venv, + .pytest_cache +max-line-length = 120 diff --git a/packages/opentelemetry-instrumentation-writer/.python-version b/packages/opentelemetry-instrumentation-writer/.python-version new file mode 100644 index 0000000000..d9506ceba5 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/.python-version @@ -0,0 +1 @@ +3.12.5 diff --git a/packages/opentelemetry-instrumentation-writer/README.md b/packages/opentelemetry-instrumentation-writer/README.md new file mode 100644 index 0000000000..a820133321 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/README.md @@ -0,0 +1,33 @@ +# OpenTelemetry Writer Instrumentation + + + PyPI version + + +This library allows tracing calls to any of Writer's endpoints sent with the official [Writer Python Library](https://github.com/writer/writer-python). + +## Installation + +```bash +pip install opentelemetry-instrumentation-writer +``` + +## Example usage + +```python +from opentelemetry.instrumentation.writer import WriterInstrumentor + +WriterInstrumentor().instrument() +``` + +## Privacy + +**By default, this instrumentation logs prompts, completions, and embeddings to span attributes**. This gives you a clear visibility into how your LLM application is working, and can make it easy to debug and evaluate the quality of the outputs. + +However, you may want to disable this logging for privacy reasons, as they may contain highly sensitive data from your users. You may also simply want to reduce the size of your traces. + +To disable logging, set the `TRACELOOP_TRACE_CONTENT` environment variable to `false`. + +```bash +TRACELOOP_TRACE_CONTENT=false +``` diff --git a/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/__init__.py b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/__init__.py new file mode 100644 index 0000000000..a2e4b3c5aa --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/__init__.py @@ -0,0 +1,668 @@ +"""OpenTelemetry Writer instrumentation""" + +import logging +import os +import time +from typing import Collection, Union + +from opentelemetry._events import EventLogger, get_event_logger +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor +from opentelemetry.instrumentation.utils import (_SUPPRESS_INSTRUMENTATION_KEY, + unwrap) +from opentelemetry.metrics import Histogram, Meter, get_meter +from opentelemetry.semconv._incubating.metrics import \ + gen_ai_metrics as GenAIMetrics +from opentelemetry.semconv_ai import ( + SUPPRESS_LANGUAGE_MODEL_INSTRUMENTATION_KEY, Meters, SpanAttributes) +from opentelemetry.trace import SpanKind, get_tracer +from opentelemetry.trace.status import Status, StatusCode +from wrapt import wrap_function_wrapper +from writerai._streaming import AsyncStream, Stream +from writerai.types import (ChatCompletion, ChatCompletionChunk, Completion, + CompletionChunk) +from writerai.types.completion import Choice + +from opentelemetry import context as context_api +from opentelemetry.instrumentation.writer.config import Config +from opentelemetry.instrumentation.writer.event_emitter import ( + emit_choice_events, emit_message_events) +from opentelemetry.instrumentation.writer.span_utils import ( + set_input_attributes, set_model_input_attributes, + set_model_response_attributes, set_response_attributes) +from opentelemetry.instrumentation.writer.utils import ( + enhance_list_size, error_metrics_attributes, + initialize_accumulated_response, initialize_choice, initialize_tool_call, + request_type_by_method, response_attributes, should_emit_events) +from opentelemetry.instrumentation.writer.version import __version__ + +logger = logging.getLogger(__name__) + +_instruments = ("writer-sdk >= 2.2.1, < 3",) + +WRAPPED_METHODS = [ + { + "package": "writerai.resources.chat", + "object": "ChatResource", + "method": "chat", + "span_name": "writerai.chat", + }, + { + "package": "writerai.resources.completions", + "object": "CompletionsResource", + "method": "create", + "span_name": "writerai.completions", + }, +] +WRAPPED_AMETHODS = [ + { + "package": "writerai.resources.chat", + "object": "AsyncChatResource", + "method": "chat", + "span_name": "writerai.chat", + }, + { + "package": "writerai.resources.completions", + "object": "AsyncCompletionsResource", + "method": "create", + "span_name": "writerai.completions", + }, +] + + +def is_streaming_response(response): + return isinstance(response, (Stream, AsyncStream)) + + +def _update_accumulated_response(accumulated_response, chunk): + if isinstance(accumulated_response, ChatCompletion) and isinstance( + chunk, ChatCompletionChunk + ): + if chunk.service_tier: + accumulated_response.service_tier = chunk.service_tier + if chunk.system_fingerprint: + accumulated_response.system_fingerprint = chunk.system_fingerprint + if chunk.model: + accumulated_response.model = chunk.model + if chunk.usage: + accumulated_response.usage = chunk.usage + if chunk.created: + accumulated_response.created = chunk.created + + if chunk.choices: + choice_index = chunk.choices[0].index or 0 + + try: + accumulated_response.choices[choice_index] + except IndexError: + enhance_list_size(accumulated_response.choices, choice_index + 1) + accumulated_response.choices[choice_index] = initialize_choice() + + if finish_reason := chunk.choices[0].finish_reason: + accumulated_response.choices[choice_index].finish_reason = finish_reason + accumulated_response.choices[choice_index].index = choice_index + + if chunk.choices[0].delta: + if content := chunk.choices[0].delta.content: + accumulated_response.choices[ + choice_index + ].message.content += content + if role := chunk.choices[0].delta.role: + accumulated_response.choices[choice_index].message.role = role + if chunk.choices[0].delta.tool_calls: + tool_index = chunk.choices[0].delta.tool_calls[0].index or 0 + + try: + accumulated_response.choices[choice_index].message.tool_calls[ + tool_index + ] + except IndexError: + enhance_list_size( + accumulated_response.choices[ + choice_index + ].message.tool_calls, + tool_index + 1, + ) + accumulated_response.choices[choice_index].message.tool_calls[ + tool_index + ] = initialize_tool_call() + + if name := chunk.choices[0].delta.tool_calls[0].function.name: + accumulated_response.choices[choice_index].message.tool_calls[ + tool_index + ].function.name += name + if ( + arguments := chunk.choices[0] + .delta.tool_calls[0] + .function.arguments + ): + accumulated_response.choices[choice_index].message.tool_calls[ + tool_index + ].function.arguments += arguments + if tool_id := chunk.choices[0].delta.tool_calls[0].id: + accumulated_response.choices[choice_index].message.tool_calls[ + tool_index + ].id = tool_id + + accumulated_response.choices[choice_index].message.tool_calls[ + tool_index + ].index = tool_index + + elif isinstance(accumulated_response, Completion) and isinstance( + chunk, CompletionChunk + ): + if chunk.value: + if accumulated_response.choices and accumulated_response.choices[0].text: + accumulated_response.choices[0].text += chunk.value + else: + accumulated_response.choices = [Choice(text=chunk.value)] + else: + raise ValueError( + f"Accumulated response and chunk types mismatch: {type(accumulated_response)}, {type(chunk)}" + ) + + +def _create_stream_processor( + response, + span, + event_logger, + start_time, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + token_histogram, + method, +): + accumulated_response = initialize_accumulated_response(response) + first_token_time = None + last_token_time = start_time + error: Exception | None = None + + try: + for chunk in response: + if first_token_time is None: + first_token_time = time.time() + + _update_accumulated_response(accumulated_response, chunk) + + yield chunk + + last_token_time = time.time() + except Exception as ex: + error = ex + if span.is_recording(): + span.set_status(Status(StatusCode.ERROR)) + raise + finally: + metrics_attributes = response_attributes(accumulated_response, method) + metrics_attributes.update({"stream": True}) + + if streaming_time_to_first_token: + ttft = (first_token_time or last_token_time) - start_time + streaming_time_to_first_token.record(ttft, attributes=metrics_attributes) + + if streaming_time_to_generate: + streaming_time_to_generate.record( + last_token_time - (first_token_time or last_token_time), + attributes=metrics_attributes, + ) + + if duration_histogram: + duration_histogram.record( + last_token_time - start_time, attributes=metrics_attributes + ) + + _handle_response( + span, accumulated_response, token_histogram, event_logger, method + ) + + if span.is_recording() and error is None: + span.set_status(Status(StatusCode.OK)) + + span.end() + + +async def _create_async_stream_processor( + response, + span, + event_logger, + start_time, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + token_histogram, + method, +): + accumulated_response = initialize_accumulated_response(response) + first_token_time = None + last_token_time = start_time + error: Exception | None = None + + try: + async for chunk in response: + if first_token_time is None: + first_token_time = time.time() + + _update_accumulated_response(accumulated_response, chunk) + + yield chunk + + last_token_time = time.time() + except Exception as ex: + error = ex + if span.is_recording(): + span.set_status(Status(StatusCode.ERROR)) + raise + finally: + metrics_attributes = response_attributes(accumulated_response, method) + metrics_attributes.update({"stream": True}) + + if streaming_time_to_first_token: + ttft = (first_token_time or last_token_time) - start_time + streaming_time_to_first_token.record(ttft, attributes=metrics_attributes) + + if streaming_time_to_generate: + streaming_time_to_generate.record( + last_token_time - (first_token_time or last_token_time), + attributes=metrics_attributes, + ) + + if duration_histogram: + duration_histogram.record( + last_token_time - start_time, attributes=metrics_attributes + ) + + _handle_response( + span, accumulated_response, token_histogram, event_logger, method + ) + + if span.is_recording() and error is None: + span.set_status(Status(StatusCode.OK)) + + span.end() + + +def _handle_input(span, kwargs, event_logger): + set_model_input_attributes(span, kwargs) + if should_emit_events() and event_logger: + emit_message_events(kwargs, event_logger) + else: + set_input_attributes(span, kwargs) + + +def _with_tracer_wrapper(func): + """Helper for providing tracer for wrapper functions. Includes metric collectors.""" + + def _with_chat_telemetry( + tracer, + token_histogram, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + event_logger, + to_wrap, + ): + def wrapper(wrapped, instance, args, kwargs): + return func( + tracer, + token_histogram, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + event_logger, + to_wrap, + wrapped, + instance, + args, + kwargs, + ) + + return wrapper + + return _with_chat_telemetry + + +def _handle_response(span, response, token_histogram, event_logger, method): + set_model_response_attributes(span, response, token_histogram, method) + if should_emit_events() and event_logger: + emit_choice_events(response, event_logger) + else: + set_response_attributes(span, response) + + +@_with_tracer_wrapper +def _wrap( + tracer, + token_histogram: Histogram, + duration_histogram: Histogram, + streaming_time_to_first_token: Histogram, + streaming_time_to_generate: Histogram, + event_logger: Union[EventLogger, None], + to_wrap, + wrapped, + instance, + args, + kwargs, +): + """Instruments and calls every function defined in TO_WRAP.""" + if context_api.get_value(_SUPPRESS_INSTRUMENTATION_KEY) or context_api.get_value( + SUPPRESS_LANGUAGE_MODEL_INSTRUMENTATION_KEY + ): + return wrapped(*args, **kwargs) + + name = to_wrap.get("span_name") + request_type = request_type_by_method(to_wrap.get("method")) + + span = tracer.start_span( + name, + kind=SpanKind.CLIENT, + attributes={ + SpanAttributes.LLM_SYSTEM: "writer", + SpanAttributes.LLM_REQUEST_TYPE: request_type.value, + }, + ) + + _handle_input(span, kwargs, event_logger) + + start_time = time.time() + try: + response = wrapped(*args, **kwargs) + except Exception as ex: # pylint: disable=broad-except + end_time = time.time() + + if duration_histogram: + duration = end_time - start_time + duration_histogram.record(duration, attributes=error_metrics_attributes(ex)) + + if span.is_recording(): + span.set_status(Status(StatusCode.ERROR)) + + span.end() + raise + + if is_streaming_response(response): + try: + return _create_stream_processor( + response, + span, + event_logger, + start_time, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + token_histogram, + to_wrap.get("method"), + ) + except Exception as ex: + logger.warning( + "Failed to process streaming response for writer span, error: %s", + str(ex), + ) + if span.is_recording(): + span.set_status(Status(StatusCode.ERROR)) + + span.end() + raise + + elif response: + end_time = time.time() + try: + if duration_histogram: + duration = end_time - start_time + duration_histogram.record( + duration, + attributes=response_attributes(response, to_wrap.get("method")), + ) + + _handle_response( + span, response, token_histogram, event_logger, to_wrap.get("method") + ) + + except Exception as ex: # pylint: disable=broad-except + logger.warning( + "Failed to set response attributes for writer span, error: %s", + str(ex), + ) + + if span.is_recording(): + span.set_status(Status(StatusCode.OK)) + + span.end() + return response + + +@_with_tracer_wrapper +async def _awrap( + tracer, + token_histogram: Histogram, + duration_histogram: Histogram, + streaming_time_to_first_token: Histogram, + streaming_time_to_generate: Histogram, + event_logger: Union[EventLogger, None], + to_wrap, + wrapped, + instance, + args, + kwargs, +): + """Instruments and calls every function defined in TO_WRAP.""" + if context_api.get_value(_SUPPRESS_INSTRUMENTATION_KEY) or context_api.get_value( + SUPPRESS_LANGUAGE_MODEL_INSTRUMENTATION_KEY + ): + return await wrapped(*args, **kwargs) + + name = to_wrap.get("span_name") + request_type = request_type_by_method(to_wrap.get("method")) + + span = tracer.start_span( + name, + kind=SpanKind.CLIENT, + attributes={ + SpanAttributes.LLM_SYSTEM: "writer", + SpanAttributes.LLM_REQUEST_TYPE: request_type.value, + }, + ) + + _handle_input(span, kwargs, event_logger) + + start_time = time.time() + try: + response = await wrapped(*args, **kwargs) + except Exception as ex: # pylint: disable=broad-except + end_time = time.time() + + if duration_histogram: + duration = end_time - start_time + duration_histogram.record(duration, attributes=error_metrics_attributes(ex)) + + if span.is_recording(): + span.set_status(Status(StatusCode.ERROR)) + + span.end() + raise + + if is_streaming_response(response): + try: + return _create_async_stream_processor( + response, + span, + event_logger, + start_time, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + token_histogram, + to_wrap.get("method"), + ) + except Exception as ex: + logger.warning( + "Failed to process streaming response for writer span, error: %s", + str(ex), + ) + if span.is_recording(): + span.set_status(Status(StatusCode.ERROR)) + + span.end() + raise + + elif response: + end_time = time.time() + try: + if duration_histogram: + duration = end_time - start_time + duration_histogram.record( + duration, + attributes=response_attributes(response, to_wrap.get("method")), + ) + + _handle_response( + span, response, token_histogram, event_logger, to_wrap.get("method") + ) + + except Exception as ex: # pylint: disable=broad-except + logger.warning( + "Failed to set response attributes for writer span, error: %s", + str(ex), + ) + + if span.is_recording(): + span.set_status(Status(StatusCode.OK)) + + span.end() + return response + + +def _build_metrics(meter: Meter): + token_histogram = meter.create_histogram( + name=Meters.LLM_TOKEN_USAGE, + unit="token", + description="Measures number of input and output tokens used", + ) + + duration_histogram = meter.create_histogram( + name=Meters.LLM_OPERATION_DURATION, + unit="s", + description="Generation operation duration", + ) + + streaming_time_to_first_token = meter.create_histogram( + name=GenAIMetrics.GEN_AI_SERVER_TIME_TO_FIRST_TOKEN, + unit="s", + description="Time to first token in streaming chat completions", + ) + + streaming_time_to_generate = meter.create_histogram( + name=Meters.LLM_STREAMING_TIME_TO_GENERATE, + unit="s", + description="Time from first token to completion in streaming responses", + ) + + return ( + token_histogram, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + ) + + +def is_metrics_collection_enabled() -> bool: + return (os.getenv("TRACELOOP_METRICS_ENABLED") or "true").lower() == "true" + + +class WriterInstrumentor(BaseInstrumentor): + """An instrumentor for Writer's client library.""" + + def __init__(self, exception_logger=None, use_legacy_attributes=True): + super().__init__() + Config.exception_logger = exception_logger + Config.use_legacy_attributes = use_legacy_attributes + + def instrumentation_dependencies(self) -> Collection[str]: + return _instruments + + def _instrument(self, **kwargs): + tracer_provider = kwargs.get("tracer_provider") + tracer = get_tracer(__name__, __version__, tracer_provider) + + meter_provider = kwargs.get("meter_provider") + meter = get_meter(__name__, __version__, meter_provider) + + if is_metrics_collection_enabled(): + ( + token_histogram, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + ) = _build_metrics(meter) + else: + ( + token_histogram, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + ) = (None, None, None, None) + + event_logger = None + if not Config.use_legacy_attributes: + event_logger_provider = kwargs.get("event_logger_provider") + event_logger = get_event_logger( + __name__, __version__, event_logger_provider=event_logger_provider + ) + + for wrapped_method in WRAPPED_METHODS: + wrap_package = wrapped_method.get("package") + wrap_object = wrapped_method.get("object") + wrap_method = wrapped_method.get("method") + + try: + wrap_function_wrapper( + wrap_package, + f"{wrap_object}.{wrap_method}", + _wrap( + tracer, + token_histogram, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + event_logger, + wrapped_method, + ), + ) + except ModuleNotFoundError: + pass + + for wrapped_method in WRAPPED_AMETHODS: + wrap_package = wrapped_method.get("package") + wrap_object = wrapped_method.get("object") + wrap_method = wrapped_method.get("method") + try: + wrap_function_wrapper( + wrap_package, + f"{wrap_object}.{wrap_method}", + _awrap( + tracer, + token_histogram, + duration_histogram, + streaming_time_to_first_token, + streaming_time_to_generate, + event_logger, + wrapped_method, + ), + ) + except ModuleNotFoundError: + pass + + def _uninstrument(self, **kwargs): + for wrapped_method in WRAPPED_METHODS: + wrap_package = wrapped_method.get("package") + wrap_object = wrapped_method.get("object") + unwrap( + f"{wrap_package}.{wrap_object}", + wrapped_method.get("method"), + ) + for wrapped_method in WRAPPED_AMETHODS: + wrap_package = wrapped_method.get("package") + wrap_object = wrapped_method.get("object") + unwrap( + f"{wrap_package}.{wrap_object}", + wrapped_method.get("method"), + ) diff --git a/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/config.py b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/config.py new file mode 100644 index 0000000000..44199c038c --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/config.py @@ -0,0 +1,3 @@ +class Config: + exception_logger = None + use_legacy_attributes = True diff --git a/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/event_emitter.py b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/event_emitter.py new file mode 100644 index 0000000000..d37e2862f7 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/event_emitter.py @@ -0,0 +1,141 @@ +from dataclasses import asdict +from enum import Enum +from typing import Union + +from opentelemetry._events import Event, EventLogger +from opentelemetry.semconv._incubating.attributes import \ + gen_ai_attributes as GenAIAttributes + +from opentelemetry.instrumentation.writer.event_models import (ChoiceEvent, + MessageEvent) +from opentelemetry.instrumentation.writer.utils import (dont_throw, + model_as_dict, + should_emit_events, + should_send_prompts) + + +class Roles(Enum): + USER = "user" + ASSISTANT = "assistant" + SYSTEM = "system" + TOOL = "tool" + + +VALID_MESSAGE_ROLES = {role.value for role in Roles} +"""The valid roles for naming the message event.""" + +EVENT_ATTRIBUTES = { + # Should be GenAIAttributes.GenAiSystemValues.WRITER.value but it's not defined in the opentelemetry-semconv package + GenAIAttributes.GEN_AI_SYSTEM: "writer" +} +"""The attributes to be used for the event.""" + + +@dont_throw +def emit_message_events(kwargs: dict, event_logger) -> None: + messages = kwargs.get("messages", []) + + if messages: + for message in kwargs.get("messages", []): + emit_event( + MessageEvent( + content=message.get("content"), + role=message.get("role", "unknown"), + tool_calls=message.get("tool_calls", []), + ), + event_logger=event_logger, + ) + + elif prompt := kwargs.get("prompt"): + emit_event( + MessageEvent(content=prompt, role="user"), + event_logger=event_logger, + ) + + +@dont_throw +def emit_choice_events(response, event_logger) -> None: + response_dict = model_as_dict(response) + + for choice in response_dict.get("choices", []): + message = choice.get("message") + + if message: + emit_event( + ChoiceEvent( + index=choice.get("index", 0), + message=MessageEvent( + content=message.get("content"), + role=message.get("role", "assistant"), + tool_calls=message.get("tool_calls") or [], + ), + finish_reason=choice.get("finish_reason"), + ), + event_logger=event_logger, + ) + elif choice.get("text") is not None: + emit_event( + ChoiceEvent( + index=choice.get("index", 0), + message=MessageEvent( + content=choice.get("text"), + role="assistant", + ), + finish_reason=choice.get("finish_reason", "unknown"), + ), + event_logger=event_logger, + ) + + +def emit_event( + event: Union[MessageEvent, ChoiceEvent], event_logger: Union[EventLogger, None] +) -> None: + if not should_emit_events() or event_logger is None: + return + + if isinstance(event, MessageEvent): + _emit_message_event(event, event_logger) + elif isinstance(event, ChoiceEvent): + _emit_choice_event(event, event_logger) + else: + raise TypeError("Unsupported event type") + + +def _emit_message_event(event: MessageEvent, event_logger: EventLogger) -> None: + body = asdict(event) + + if event.role in VALID_MESSAGE_ROLES: + name = f"gen_ai.{event.role}.message" + body.pop("role", None) + else: + name = "gen_ai.user.message" + + if event.role != Roles.ASSISTANT.value: + body.pop("tool_calls", None) + + if not should_send_prompts(): + del body["content"] + if body.get("tool_calls") is not None: + for tool_call in body["tool_calls"]: + tool_call["function"].pop("arguments", None) + + event_logger.emit(Event(name=name, body=body, attributes=EVENT_ATTRIBUTES)) + + +def _emit_choice_event(event: ChoiceEvent, event_logger: EventLogger) -> None: + body = asdict(event) + if event.message.role == Roles.ASSISTANT.value: + body["message"].pop("role", None) + + if event.message.tool_calls is None: + del body["message"]["tool_calls"] + + if not should_send_prompts(): + body["message"].pop("content", None) + if body["message"].get("tool_calls") is not None: + for tool_call in body["message"]["tool_calls"]: + tool_call["function"].pop("arguments", None) + + event_logger.emit( + Event(name="gen_ai.choice", body=body, attributes=EVENT_ATTRIBUTES) + ) diff --git a/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/event_models.py b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/event_models.py new file mode 100644 index 0000000000..ec95cbe8e5 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/event_models.py @@ -0,0 +1,27 @@ +from dataclasses import dataclass +from typing import Any, List, Literal, Optional, TypedDict + + +class _FunctionToolCall(TypedDict): + name: str + arguments: Optional[dict[str, Any]] + + +class ToolCall(TypedDict): + id: str + function: _FunctionToolCall + type: Literal["function"] + + +@dataclass +class MessageEvent: + content: Any + role: str = "user" + tool_calls: Optional[List[ToolCall]] = None + + +@dataclass +class ChoiceEvent: + index: int + message: MessageEvent + finish_reason: str = "unknown" diff --git a/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/span_utils.py b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/span_utils.py new file mode 100644 index 0000000000..bdac0ebd9e --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/span_utils.py @@ -0,0 +1,173 @@ +from opentelemetry.metrics import Histogram +from opentelemetry.semconv_ai import SpanAttributes +from opentelemetry.trace import Span + +from opentelemetry.instrumentation.writer.utils import (dont_throw, + model_as_dict, + response_attributes, + set_span_attribute, + should_send_prompts) + + +@dont_throw +def set_input_attributes(span: Span, kwargs: dict) -> None: + if not span.is_recording(): + return + + if should_send_prompts(): + if kwargs.get("prompt") is not None: + set_span_attribute(span, f"{SpanAttributes.LLM_PROMPTS}.0.role", "user") + set_span_attribute( + span, f"{SpanAttributes.LLM_PROMPTS}.0.content", kwargs.get("prompt") + ) + + elif kwargs.get("messages") is not None: + for i, message in enumerate(kwargs.get("messages")): + set_span_attribute( + span, f"{SpanAttributes.LLM_PROMPTS}.{i}.role", message.get("role") + ) + set_span_attribute( + span, + f"{SpanAttributes.LLM_PROMPTS}.{i}.content", + message.get("content"), + ) + + tool_calls = message.get("tool_calls") + + if tool_calls: + for j, tool_call in enumerate(tool_calls): + set_span_attribute( + span, + f"{SpanAttributes.LLM_PROMPTS}.{i}.tool_calls.{j}.id", + tool_call.get("id"), + ) + + function = tool_call.get("function", {}) + set_span_attribute( + span, + f"{SpanAttributes.LLM_PROMPTS}.{i}.tool_calls.{j}.name", + function.get("name"), + ) + + set_span_attribute( + span, + f"{SpanAttributes.LLM_PROMPTS}.{i}.tool_calls.{j}.arguments", + function.get("arguments"), + ) + + +@dont_throw +def set_model_input_attributes(span: Span, kwargs: dict) -> None: + if not span.is_recording(): + return + + set_span_attribute(span, SpanAttributes.LLM_REQUEST_MODEL, kwargs.get("model")) + set_span_attribute( + span, SpanAttributes.LLM_REQUEST_MAX_TOKENS, kwargs.get("max_tokens") + ) + set_span_attribute( + span, SpanAttributes.LLM_REQUEST_TEMPERATURE, kwargs.get("temperature") + ) + set_span_attribute(span, SpanAttributes.LLM_REQUEST_TOP_P, kwargs.get("top_p")) + set_span_attribute(span, SpanAttributes.LLM_CHAT_STOP_SEQUENCES, kwargs.get("stop")) + set_span_attribute( + span, SpanAttributes.LLM_IS_STREAMING, kwargs.get("stream") or False + ) + + +@dont_throw +def set_model_response_attributes( + span: Span, response, token_histogram: Histogram, method: str +) -> None: + if not span.is_recording(): + return + + response_dict = model_as_dict(response) + + set_span_attribute( + span, SpanAttributes.LLM_RESPONSE_MODEL, response_dict.get("model") + ) + + usage = response_dict.get("usage") or {} + prompt_tokens = usage.get("prompt_tokens") + completion_tokens = usage.get("completion_tokens") + total_tokens = usage.get("total_tokens") + + if usage: + set_span_attribute(span, SpanAttributes.LLM_USAGE_TOTAL_TOKENS, total_tokens) + set_span_attribute( + span, SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, completion_tokens + ) + set_span_attribute(span, SpanAttributes.LLM_USAGE_PROMPT_TOKENS, prompt_tokens) + + metrics_attributes = response_attributes(response, method) + + if ( + isinstance(prompt_tokens, int) + and prompt_tokens >= 0 + and token_histogram is not None + ): + metrics_attributes.update({SpanAttributes.LLM_TOKEN_TYPE: "input"}) + token_histogram.record( + prompt_tokens, + attributes=metrics_attributes, + ) + + if ( + isinstance(completion_tokens, int) + and completion_tokens >= 0 + and token_histogram is not None + ): + metrics_attributes.update({SpanAttributes.LLM_TOKEN_TYPE: "output"}) + token_histogram.record( + completion_tokens, + attributes=metrics_attributes, + ) + + +@dont_throw +def set_response_attributes(span: Span, response) -> None: + if not span.is_recording(): + return + + response_dict = model_as_dict(response) + choices = response_dict.get("choices") + + if should_send_prompts() and choices: + _set_completions(span, choices) + + +def _set_completions(span: Span, choices: list) -> None: + if choices is None or not should_send_prompts(): + return + + for choice in choices: + index = choice.get("index", 0) + prefix = f"{SpanAttributes.LLM_COMPLETIONS}.{index}" + set_span_attribute(span, f"{prefix}.finish_reason", choice.get("finish_reason")) + + message = choice.get("message") + + if message: + set_span_attribute(span, f"{prefix}.role", message.get("role", "assistant")) + set_span_attribute(span, f"{prefix}.content", message.get("content")) + + tool_calls = message.get("tool_calls") + if tool_calls: + for i, tool_call in enumerate(tool_calls): + function = tool_call.get("function", {}) + set_span_attribute( + span, f"{prefix}.tool_calls.{i}.id", tool_call.get("id") + ) + set_span_attribute( + span, f"{prefix}.tool_calls.{i}.name", function.get("name") + ) + set_span_attribute( + span, + f"{prefix}.tool_calls.{i}.arguments", + function.get("arguments"), + ) + + elif choice.get("text") is not None: + set_span_attribute(span, f"{prefix}.role", "assistant") + set_span_attribute(span, f"{prefix}.content", choice.get("text")) diff --git a/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/utils.py b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/utils.py new file mode 100644 index 0000000000..e420cb3fc2 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/utils.py @@ -0,0 +1,156 @@ +import logging +import os +import traceback +from importlib.metadata import version +from typing import Any + +from opentelemetry.semconv_ai import LLMRequestTypeValues, SpanAttributes +from opentelemetry.trace import Span +from writerai.types import ChatCompletion, Completion +from writerai.types.chat_completion import ChatCompletionChoice +from writerai.types.chat_completion_message import ChatCompletionMessage +from writerai.types.shared.tool_call import Function, ToolCall + +from opentelemetry import context as context_api +from opentelemetry.instrumentation.writer import Config + +GEN_AI_SYSTEM = "gen_ai.system" +GEN_AI_SYSTEM_WRITER = "writer" + +try: + _PYDANTIC_VERSION = version("pydantic") +except ImportError: + _PYDANTIC_VERSION = "0.0.0" + +TRACELOOP_TRACE_CONTENT = "TRACELOOP_TRACE_CONTENT" + + +def set_span_attribute(span: Span, name: str, value: Any | None) -> None: + if value is not None and value != "": + span.set_attribute(name, value) + + +def should_send_prompts() -> bool: + return ( + os.getenv(TRACELOOP_TRACE_CONTENT) or "true" + ).lower() == "true" or context_api.get_value("override_enable_content_tracing") + + +def dont_throw(func): + """ + A decorator that wraps the passed in function and logs exceptions instead of throwing them. + + @param func: The function to wrap + @return: The wrapper function + """ + # Obtain a logger specific to the function's module + logger = logging.getLogger(func.__module__) + + def wrapper(*args, **kwargs): + try: + return func(*args, **kwargs) + except Exception as e: + logger.debug( + "OpenLLMetry failed to trace in %s, error: %s", + func.__name__, + traceback.format_exc(), + ) + if Config.exception_logger: + Config.exception_logger(e) + + return wrapper + + +@dont_throw +def error_metrics_attributes(exception) -> dict: + return { + GEN_AI_SYSTEM: GEN_AI_SYSTEM_WRITER, + "error.type": exception.__class__.__name__, + "error.message": str(exception), + } + + +def request_type_by_method(method_name): + if method_name == "chat": + return LLMRequestTypeValues.CHAT + elif method_name == "create": + return LLMRequestTypeValues.COMPLETION + else: + return LLMRequestTypeValues.UNKNOWN + + +@dont_throw +def response_attributes(response, method) -> dict: + response_dict = model_as_dict(response) + + return { + GEN_AI_SYSTEM: GEN_AI_SYSTEM_WRITER, + SpanAttributes.LLM_RESPONSE_MODEL: response_dict.get("model"), + SpanAttributes.LLM_REQUEST_TYPE: request_type_by_method(method).value, + } + + +def should_emit_events() -> bool: + """ + Checks if the instrumentation isn't using the legacy attributes + and if the event logger is not None. + """ + + return not Config.use_legacy_attributes + + +def model_as_dict(model) -> dict: + if _PYDANTIC_VERSION < "2.0.0": + return model.dict() + if hasattr(model, "model_dump"): + return model.model_dump() + elif hasattr(model, "parse"): + return model_as_dict(model.parse()) + else: + return model + + +def initialize_accumulated_response(stream): + request_url = stream.response.request.url.path + + if "chat" in request_url: + return ChatCompletion( + id="", + choices=[], + created=0, + model="", + object="chat.completion", + ) + elif "completions" in request_url: + return Completion(choices=[]) + else: + raise ValueError(f"Unknown stream type. Request url: {request_url}") + + +def initialize_choice(): + return ChatCompletionChoice( + index=0, + finish_reason="stop", + message=ChatCompletionMessage( + content="", + role="assistant", + tool_calls=[], + ), + ) + + +def initialize_tool_call(): + return ToolCall( + id="", function=Function(name="", arguments=""), type="function", index=0 + ) + + +def enhance_list_size(current_list, desired_size): + if current_list is None: + current_list = [None] * desired_size + else: + if desired_size < len(current_list): + raise ValueError( + f"Desired size ({desired_size} can't be less than actual size ({len(current_list)})." + ) + current_list += [None] * (desired_size - len(current_list)) diff --git a/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/version.py b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/version.py new file mode 100644 index 0000000000..8583baf64f --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer/version.py @@ -0,0 +1 @@ +__version__ = "0.46.2" diff --git a/packages/opentelemetry-instrumentation-writer/poetry.lock b/packages/opentelemetry-instrumentation-writer/poetry.lock new file mode 100644 index 0000000000..4313270335 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/poetry.lock @@ -0,0 +1,1544 @@ +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.9.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, + {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} + +[package.extras] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "autopep8" +version = "2.2.0" +description = "A tool that automatically formats Python code to conform to the PEP 8 style guide" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "autopep8-2.2.0-py2.py3-none-any.whl", hash = "sha256:05418a981f038969d8bdcd5636bf15948db7555ae944b9f79b5a34b35f1370d4"}, + {file = "autopep8-2.2.0.tar.gz", hash = "sha256:d306a0581163ac29908280ad557773a95a9bede072c0fafed6f141f5311f43c1"}, +] + +[package.dependencies] +pycodestyle = ">=2.11.0" +tomli = {version = "*", markers = "python_version < \"3.11\""} + +[[package]] +name = "black" +version = "25.1.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32"}, + {file = "black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da"}, + {file = "black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7"}, + {file = "black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9"}, + {file = "black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0"}, + {file = "black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299"}, + {file = "black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096"}, + {file = "black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2"}, + {file = "black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b"}, + {file = "black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc"}, + {file = "black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f"}, + {file = "black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba"}, + {file = "black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f"}, + {file = "black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3"}, + {file = "black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171"}, + {file = "black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18"}, + {file = "black-25.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1ee0a0c330f7b5130ce0caed9936a904793576ef4d2b98c40835d6a65afa6a0"}, + {file = "black-25.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3df5f1bf91d36002b0a75389ca8663510cf0531cca8aa5c1ef695b46d98655f"}, + {file = "black-25.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9e6827d563a2c820772b32ce8a42828dc6790f095f441beef18f96aa6f8294e"}, + {file = "black-25.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:bacabb307dca5ebaf9c118d2d2f6903da0d62c9faa82bd21a33eecc319559355"}, + {file = "black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717"}, + {file = "black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +packaging = ">=22.0" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.10)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "certifi" +version = "2025.7.14" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.7" +groups = ["test"] +files = [ + {file = "certifi-2025.7.14-py3-none-any.whl", hash = "sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2"}, + {file = "certifi-2025.7.14.tar.gz", hash = "sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995"}, +] + +[[package]] +name = "click" +version = "8.2.1" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.10" +groups = ["dev"] +files = [ + {file = "click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b"}, + {file = "click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev", "test"] +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] +markers = {dev = "platform_system == \"Windows\"", test = "sys_platform == \"win32\""} + +[[package]] +name = "distro" +version = "1.9.0" +description = "Distro - an OS platform information API" +optional = false +python-versions = ">=3.6" +groups = ["test"] +files = [ + {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, + {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.0" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +groups = ["test"] +markers = "python_version == \"3.10\"" +files = [ + {file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"}, + {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.6.0", markers = "python_version < \"3.13\""} + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "flake8" +version = "7.0.0" +description = "the modular source code checker: pep8 pyflakes and co" +optional = false +python-versions = ">=3.8.1" +groups = ["dev"] +files = [ + {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, + {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, +] + +[package.dependencies] +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.11.0,<2.12.0" +pyflakes = ">=3.2.0,<3.3.0" + +[[package]] +name = "h11" +version = "0.16.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.16" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +groups = ["test"] +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "importlib-metadata" +version = "8.7.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.9" +groups = ["main", "test"] +files = [ + {file = "importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd"}, + {file = "importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000"}, +] + +[package.dependencies] +zipp = ">=3.20" + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +perf = ["ipython"] +test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +type = ["pytest-mypy"] + +[[package]] +name = "iniconfig" +version = "2.1.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, + {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, +] + +[[package]] +name = "isort" +version = "6.0.1" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.9.0" +groups = ["dev"] +files = [ + {file = "isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615"}, + {file = "isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450"}, +] + +[package.extras] +colors = ["colorama"] +plugins = ["setuptools"] + +[[package]] +name = "jiter" +version = "0.10.0" +description = "Fast iterable JSON parser." +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "jiter-0.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cd2fb72b02478f06a900a5782de2ef47e0396b3e1f7d5aba30daeb1fce66f303"}, + {file = "jiter-0.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32bb468e3af278f095d3fa5b90314728a6916d89ba3d0ffb726dd9bf7367285e"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8b3e0068c26ddedc7abc6fac37da2d0af16b921e288a5a613f4b86f050354f"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:286299b74cc49e25cd42eea19b72aa82c515d2f2ee12d11392c56d8701f52224"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ed5649ceeaeffc28d87fb012d25a4cd356dcd53eff5acff1f0466b831dda2a7"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2ab0051160cb758a70716448908ef14ad476c3774bd03ddce075f3c1f90a3d6"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03997d2f37f6b67d2f5c475da4412be584e1cec273c1cfc03d642c46db43f8cf"}, + {file = "jiter-0.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c404a99352d839fed80d6afd6c1d66071f3bacaaa5c4268983fc10f769112e90"}, + {file = "jiter-0.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66e989410b6666d3ddb27a74c7e50d0829704ede652fd4c858e91f8d64b403d0"}, + {file = "jiter-0.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b532d3af9ef4f6374609a3bcb5e05a1951d3bf6190dc6b176fdb277c9bbf15ee"}, + {file = "jiter-0.10.0-cp310-cp310-win32.whl", hash = "sha256:da9be20b333970e28b72edc4dff63d4fec3398e05770fb3205f7fb460eb48dd4"}, + {file = "jiter-0.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:f59e533afed0c5b0ac3eba20d2548c4a550336d8282ee69eb07b37ea526ee4e5"}, + {file = "jiter-0.10.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3bebe0c558e19902c96e99217e0b8e8b17d570906e72ed8a87170bc290b1e978"}, + {file = "jiter-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:558cc7e44fd8e507a236bee6a02fa17199ba752874400a0ca6cd6e2196cdb7dc"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d613e4b379a07d7c8453c5712ce7014e86c6ac93d990a0b8e7377e18505e98d"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f62cf8ba0618eda841b9bf61797f21c5ebd15a7a1e19daab76e4e4b498d515b2"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:919d139cdfa8ae8945112398511cb7fca58a77382617d279556b344867a37e61"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13ddbc6ae311175a3b03bd8994881bc4635c923754932918e18da841632349db"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c440ea003ad10927a30521a9062ce10b5479592e8a70da27f21eeb457b4a9c5"}, + {file = "jiter-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc347c87944983481e138dea467c0551080c86b9d21de6ea9306efb12ca8f606"}, + {file = "jiter-0.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:13252b58c1f4d8c5b63ab103c03d909e8e1e7842d302473f482915d95fefd605"}, + {file = "jiter-0.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7d1bbf3c465de4a24ab12fb7766a0003f6f9bce48b8b6a886158c4d569452dc5"}, + {file = "jiter-0.10.0-cp311-cp311-win32.whl", hash = "sha256:db16e4848b7e826edca4ccdd5b145939758dadf0dc06e7007ad0e9cfb5928ae7"}, + {file = "jiter-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:9c9c1d5f10e18909e993f9641f12fe1c77b3e9b533ee94ffa970acc14ded3812"}, + {file = "jiter-0.10.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1e274728e4a5345a6dde2d343c8da018b9d4bd4350f5a472fa91f66fda44911b"}, + {file = "jiter-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7202ae396446c988cb2a5feb33a543ab2165b786ac97f53b59aafb803fef0744"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23ba7722d6748b6920ed02a8f1726fb4b33e0fd2f3f621816a8b486c66410ab2"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:371eab43c0a288537d30e1f0b193bc4eca90439fc08a022dd83e5e07500ed026"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c675736059020365cebc845a820214765162728b51ab1e03a1b7b3abb70f74c"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0c5867d40ab716e4684858e4887489685968a47e3ba222e44cde6e4a2154f959"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395bb9a26111b60141757d874d27fdea01b17e8fac958b91c20128ba8f4acc8a"}, + {file = "jiter-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6842184aed5cdb07e0c7e20e5bdcfafe33515ee1741a6835353bb45fe5d1bd95"}, + {file = "jiter-0.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:62755d1bcea9876770d4df713d82606c8c1a3dca88ff39046b85a048566d56ea"}, + {file = "jiter-0.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:533efbce2cacec78d5ba73a41756beff8431dfa1694b6346ce7af3a12c42202b"}, + {file = "jiter-0.10.0-cp312-cp312-win32.whl", hash = "sha256:8be921f0cadd245e981b964dfbcd6fd4bc4e254cdc069490416dd7a2632ecc01"}, + {file = "jiter-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:a7c7d785ae9dda68c2678532a5a1581347e9c15362ae9f6e68f3fdbfb64f2e49"}, + {file = "jiter-0.10.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e0588107ec8e11b6f5ef0e0d656fb2803ac6cf94a96b2b9fc675c0e3ab5e8644"}, + {file = "jiter-0.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cafc4628b616dc32530c20ee53d71589816cf385dd9449633e910d596b1f5c8a"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:520ef6d981172693786a49ff5b09eda72a42e539f14788124a07530f785c3ad6"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:554dedfd05937f8fc45d17ebdf298fe7e0c77458232bcb73d9fbbf4c6455f5b3"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bc299da7789deacf95f64052d97f75c16d4fc8c4c214a22bf8d859a4288a1c2"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5161e201172de298a8a1baad95eb85db4fb90e902353b1f6a41d64ea64644e25"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e2227db6ba93cb3e2bf67c87e594adde0609f146344e8207e8730364db27041"}, + {file = "jiter-0.10.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15acb267ea5e2c64515574b06a8bf393fbfee6a50eb1673614aa45f4613c0cca"}, + {file = "jiter-0.10.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:901b92f2e2947dc6dfcb52fd624453862e16665ea909a08398dde19c0731b7f4"}, + {file = "jiter-0.10.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d0cb9a125d5a3ec971a094a845eadde2db0de85b33c9f13eb94a0c63d463879e"}, + {file = "jiter-0.10.0-cp313-cp313-win32.whl", hash = "sha256:48a403277ad1ee208fb930bdf91745e4d2d6e47253eedc96e2559d1e6527006d"}, + {file = "jiter-0.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:75f9eb72ecb640619c29bf714e78c9c46c9c4eaafd644bf78577ede459f330d4"}, + {file = "jiter-0.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:28ed2a4c05a1f32ef0e1d24c2611330219fed727dae01789f4a335617634b1ca"}, + {file = "jiter-0.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14a4c418b1ec86a195f1ca69da8b23e8926c752b685af665ce30777233dfe070"}, + {file = "jiter-0.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d7bfed2fe1fe0e4dda6ef682cee888ba444b21e7a6553e03252e4feb6cf0adca"}, + {file = "jiter-0.10.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:5e9251a5e83fab8d87799d3e1a46cb4b7f2919b895c6f4483629ed2446f66522"}, + {file = "jiter-0.10.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:023aa0204126fe5b87ccbcd75c8a0d0261b9abdbbf46d55e7ae9f8e22424eeb8"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c189c4f1779c05f75fc17c0c1267594ed918996a231593a21a5ca5438445216"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:15720084d90d1098ca0229352607cd68256c76991f6b374af96f36920eae13c4"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4f2fb68e5f1cfee30e2b2a09549a00683e0fde4c6a2ab88c94072fc33cb7426"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce541693355fc6da424c08b7edf39a2895f58d6ea17d92cc2b168d20907dee12"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31c50c40272e189d50006ad5c73883caabb73d4e9748a688b216e85a9a9ca3b9"}, + {file = "jiter-0.10.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa3402a2ff9815960e0372a47b75c76979d74402448509ccd49a275fa983ef8a"}, + {file = "jiter-0.10.0-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:1956f934dca32d7bb647ea21d06d93ca40868b505c228556d3373cbd255ce853"}, + {file = "jiter-0.10.0-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:fcedb049bdfc555e261d6f65a6abe1d5ad68825b7202ccb9692636c70fcced86"}, + {file = "jiter-0.10.0-cp314-cp314-win32.whl", hash = "sha256:ac509f7eccca54b2a29daeb516fb95b6f0bd0d0d8084efaf8ed5dfc7b9f0b357"}, + {file = "jiter-0.10.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5ed975b83a2b8639356151cef5c0d597c68376fc4922b45d0eb384ac058cfa00"}, + {file = "jiter-0.10.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa96f2abba33dc77f79b4cf791840230375f9534e5fac927ccceb58c5e604a5"}, + {file = "jiter-0.10.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bd6292a43c0fc09ce7c154ec0fa646a536b877d1e8f2f96c19707f65355b5a4d"}, + {file = "jiter-0.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:39de429dcaeb6808d75ffe9effefe96a4903c6a4b376b2f6d08d77c1aaee2f18"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52ce124f13a7a616fad3bb723f2bfb537d78239d1f7f219566dc52b6f2a9e48d"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:166f3606f11920f9a1746b2eea84fa2c0a5d50fd313c38bdea4edc072000b0af"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:28dcecbb4ba402916034fc14eba7709f250c4d24b0c43fc94d187ee0580af181"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86c5aa6910f9bebcc7bc4f8bc461aff68504388b43bfe5e5c0bd21efa33b52f4"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ceeb52d242b315d7f1f74b441b6a167f78cea801ad7c11c36da77ff2d42e8a28"}, + {file = "jiter-0.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ff76d8887c8c8ee1e772274fcf8cc1071c2c58590d13e33bd12d02dc9a560397"}, + {file = "jiter-0.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a9be4d0fa2b79f7222a88aa488bd89e2ae0a0a5b189462a12def6ece2faa45f1"}, + {file = "jiter-0.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9ab7fd8738094139b6c1ab1822d6f2000ebe41515c537235fd45dabe13ec9324"}, + {file = "jiter-0.10.0-cp39-cp39-win32.whl", hash = "sha256:5f51e048540dd27f204ff4a87f5d79294ea0aa3aa552aca34934588cf27023cf"}, + {file = "jiter-0.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:1b28302349dc65703a9e4ead16f163b1c339efffbe1049c30a44b001a2a4fff9"}, + {file = "jiter-0.10.0.tar.gz", hash = "sha256:07a7142c38aacc85194391108dc91b5b57093c978a9932bd86a36862759d9500"}, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "multidict" +version = "6.6.3" +description = "multidict implementation" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "multidict-6.6.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a2be5b7b35271f7fff1397204ba6708365e3d773579fe2a30625e16c4b4ce817"}, + {file = "multidict-6.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12f4581d2930840295c461764b9a65732ec01250b46c6b2c510d7ee68872b140"}, + {file = "multidict-6.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dd7793bab517e706c9ed9d7310b06c8672fd0aeee5781bfad612f56b8e0f7d14"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:72d8815f2cd3cf3df0f83cac3f3ef801d908b2d90409ae28102e0553af85545a"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:531e331a2ee53543ab32b16334e2deb26f4e6b9b28e41f8e0c87e99a6c8e2d69"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:42ca5aa9329a63be8dc49040f63817d1ac980e02eeddba763a9ae5b4027b9c9c"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:208b9b9757060b9faa6f11ab4bc52846e4f3c2fb8b14d5680c8aac80af3dc751"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:acf6b97bd0884891af6a8b43d0f586ab2fcf8e717cbd47ab4bdddc09e20652d8"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:68e9e12ed00e2089725669bdc88602b0b6f8d23c0c95e52b95f0bc69f7fe9b55"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:05db2f66c9addb10cfa226e1acb363450fab2ff8a6df73c622fefe2f5af6d4e7"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:0db58da8eafb514db832a1b44f8fa7906fdd102f7d982025f816a93ba45e3dcb"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:14117a41c8fdb3ee19c743b1c027da0736fdb79584d61a766da53d399b71176c"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:877443eaaabcd0b74ff32ebeed6f6176c71850feb7d6a1d2db65945256ea535c"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:70b72e749a4f6e7ed8fb334fa8d8496384840319512746a5f42fa0aec79f4d61"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43571f785b86afd02b3855c5ac8e86ec921b760298d6f82ff2a61daf5a35330b"}, + {file = "multidict-6.6.3-cp310-cp310-win32.whl", hash = "sha256:20c5a0c3c13a15fd5ea86c42311859f970070e4e24de5a550e99d7c271d76318"}, + {file = "multidict-6.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab0a34a007704c625e25a9116c6770b4d3617a071c8a7c30cd338dfbadfe6485"}, + {file = "multidict-6.6.3-cp310-cp310-win_arm64.whl", hash = "sha256:769841d70ca8bdd140a715746199fc6473414bd02efd678d75681d2d6a8986c5"}, + {file = "multidict-6.6.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18f4eba0cbac3546b8ae31e0bbc55b02c801ae3cbaf80c247fcdd89b456ff58c"}, + {file = "multidict-6.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef43b5dd842382329e4797c46f10748d8c2b6e0614f46b4afe4aee9ac33159df"}, + {file = "multidict-6.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf9bd1fd5eec01494e0f2e8e446a74a85d5e49afb63d75a9934e4a5423dba21d"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:5bd8d6f793a787153956cd35e24f60485bf0651c238e207b9a54f7458b16d539"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bf99b4daf908c73856bd87ee0a2499c3c9a3d19bb04b9c6025e66af3fd07462"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b9e59946b49dafaf990fd9c17ceafa62976e8471a14952163d10a7a630413a9"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e2db616467070d0533832d204c54eea6836a5e628f2cb1e6dfd8cd6ba7277cb7"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7394888236621f61dcdd25189b2768ae5cc280f041029a5bcf1122ac63df79f9"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f114d8478733ca7388e7c7e0ab34b72547476b97009d643644ac33d4d3fe1821"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cdf22e4db76d323bcdc733514bf732e9fb349707c98d341d40ebcc6e9318ef3d"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e995a34c3d44ab511bfc11aa26869b9d66c2d8c799fa0e74b28a473a692532d6"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:766a4a5996f54361d8d5a9050140aa5362fe48ce51c755a50c0bc3706460c430"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3893a0d7d28a7fe6ca7a1f760593bc13038d1d35daf52199d431b61d2660602b"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:934796c81ea996e61914ba58064920d6cad5d99140ac3167901eb932150e2e56"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9ed948328aec2072bc00f05d961ceadfd3e9bfc2966c1319aeaf7b7c21219183"}, + {file = "multidict-6.6.3-cp311-cp311-win32.whl", hash = "sha256:9f5b28c074c76afc3e4c610c488e3493976fe0e596dd3db6c8ddfbb0134dcac5"}, + {file = "multidict-6.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc7f6fbc61b1c16050a389c630da0b32fc6d4a3d191394ab78972bf5edc568c2"}, + {file = "multidict-6.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:d4e47d8faffaae822fb5cba20937c048d4f734f43572e7079298a6c39fb172cb"}, + {file = "multidict-6.6.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:056bebbeda16b2e38642d75e9e5310c484b7c24e3841dc0fb943206a72ec89d6"}, + {file = "multidict-6.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e5f481cccb3c5c5e5de5d00b5141dc589c1047e60d07e85bbd7dea3d4580d63f"}, + {file = "multidict-6.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10bea2ee839a759ee368b5a6e47787f399b41e70cf0c20d90dfaf4158dfb4e55"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:2334cfb0fa9549d6ce2c21af2bfbcd3ac4ec3646b1b1581c88e3e2b1779ec92b"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8fee016722550a2276ca2cb5bb624480e0ed2bd49125b2b73b7010b9090e888"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5511cb35f5c50a2db21047c875eb42f308c5583edf96bd8ebf7d770a9d68f6d"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:712b348f7f449948e0a6c4564a21c7db965af900973a67db432d724619b3c680"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e4e15d2138ee2694e038e33b7c3da70e6b0ad8868b9f8094a72e1414aeda9c1a"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df25594989aebff8a130f7899fa03cbfcc5d2b5f4a461cf2518236fe6f15961"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:159ca68bfd284a8860f8d8112cf0521113bffd9c17568579e4d13d1f1dc76b65"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e098c17856a8c9ade81b4810888c5ad1914099657226283cab3062c0540b0643"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:67c92ed673049dec52d7ed39f8cf9ebbadf5032c774058b4406d18c8f8fe7063"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:bd0578596e3a835ef451784053cfd327d607fc39ea1a14812139339a18a0dbc3"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:346055630a2df2115cd23ae271910b4cae40f4e336773550dca4889b12916e75"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:555ff55a359302b79de97e0468e9ee80637b0de1fce77721639f7cd9440b3a10"}, + {file = "multidict-6.6.3-cp312-cp312-win32.whl", hash = "sha256:73ab034fb8d58ff85c2bcbadc470efc3fafeea8affcf8722855fb94557f14cc5"}, + {file = "multidict-6.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:04cbcce84f63b9af41bad04a54d4cc4e60e90c35b9e6ccb130be2d75b71f8c17"}, + {file = "multidict-6.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:0f1130b896ecb52d2a1e615260f3ea2af55fa7dc3d7c3003ba0c3121a759b18b"}, + {file = "multidict-6.6.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:540d3c06d48507357a7d57721e5094b4f7093399a0106c211f33540fdc374d55"}, + {file = "multidict-6.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9c19cea2a690f04247d43f366d03e4eb110a0dc4cd1bbeee4d445435428ed35b"}, + {file = "multidict-6.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7af039820cfd00effec86bda5d8debef711a3e86a1d3772e85bea0f243a4bd65"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:500b84f51654fdc3944e936f2922114349bf8fdcac77c3092b03449f0e5bc2b3"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3fc723ab8a5c5ed6c50418e9bfcd8e6dceba6c271cee6728a10a4ed8561520c"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:94c47ea3ade005b5976789baaed66d4de4480d0a0bf31cef6edaa41c1e7b56a6"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dbc7cf464cc6d67e83e136c9f55726da3a30176f020a36ead246eceed87f1cd8"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:900eb9f9da25ada070f8ee4a23f884e0ee66fe4e1a38c3af644256a508ad81ca"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6df517cf177da5d47ab15407143a89cd1a23f8b335f3a28d57e8b0a3dbb884"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ef421045f13879e21c994b36e728d8e7d126c91a64b9185810ab51d474f27e7"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6c1e61bb4f80895c081790b6b09fa49e13566df8fbff817da3f85b3a8192e36b"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e5e8523bb12d7623cd8300dbd91b9e439a46a028cd078ca695eb66ba31adee3c"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ef58340cc896219e4e653dade08fea5c55c6df41bcc68122e3be3e9d873d9a7b"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc9dc435ec8699e7b602b94fe0cd4703e69273a01cbc34409af29e7820f777f1"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9e864486ef4ab07db5e9cb997bad2b681514158d6954dd1958dfb163b83d53e6"}, + {file = "multidict-6.6.3-cp313-cp313-win32.whl", hash = "sha256:5633a82fba8e841bc5c5c06b16e21529573cd654f67fd833650a215520a6210e"}, + {file = "multidict-6.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:e93089c1570a4ad54c3714a12c2cef549dc9d58e97bcded193d928649cab78e9"}, + {file = "multidict-6.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:c60b401f192e79caec61f166da9c924e9f8bc65548d4246842df91651e83d600"}, + {file = "multidict-6.6.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:02fd8f32d403a6ff13864b0851f1f523d4c988051eea0471d4f1fd8010f11134"}, + {file = "multidict-6.6.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f3aa090106b1543f3f87b2041eef3c156c8da2aed90c63a2fbed62d875c49c37"}, + {file = "multidict-6.6.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e924fb978615a5e33ff644cc42e6aa241effcf4f3322c09d4f8cebde95aff5f8"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:b9fe5a0e57c6dbd0e2ce81ca66272282c32cd11d31658ee9553849d91289e1c1"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b24576f208793ebae00280c59927c3b7c2a3b1655e443a25f753c4611bc1c373"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:135631cb6c58eac37d7ac0df380294fecdc026b28837fa07c02e459c7fb9c54e"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:274d416b0df887aef98f19f21578653982cfb8a05b4e187d4a17103322eeaf8f"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e252017a817fad7ce05cafbe5711ed40faeb580e63b16755a3a24e66fa1d87c0"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4cc8d848cd4fe1cdee28c13ea79ab0ed37fc2e89dd77bac86a2e7959a8c3bc"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9e236a7094b9c4c1b7585f6b9cca34b9d833cf079f7e4c49e6a4a6ec9bfdc68f"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e0cb0ab69915c55627c933f0b555a943d98ba71b4d1c57bc0d0a66e2567c7471"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:81ef2f64593aba09c5212a3d0f8c906a0d38d710a011f2f42759704d4557d3f2"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:b9cbc60010de3562545fa198bfc6d3825df430ea96d2cc509c39bd71e2e7d648"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:70d974eaaa37211390cd02ef93b7e938de564bbffa866f0b08d07e5e65da783d"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3713303e4a6663c6d01d648a68f2848701001f3390a030edaaf3fc949c90bf7c"}, + {file = "multidict-6.6.3-cp313-cp313t-win32.whl", hash = "sha256:639ecc9fe7cd73f2495f62c213e964843826f44505a3e5d82805aa85cac6f89e"}, + {file = "multidict-6.6.3-cp313-cp313t-win_amd64.whl", hash = "sha256:9f97e181f344a0ef3881b573d31de8542cc0dbc559ec68c8f8b5ce2c2e91646d"}, + {file = "multidict-6.6.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ce8b7693da41a3c4fde5871c738a81490cea5496c671d74374c8ab889e1834fb"}, + {file = "multidict-6.6.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c8161b5a7778d3137ea2ee7ae8a08cce0010de3b00ac671c5ebddeaa17cefd22"}, + {file = "multidict-6.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1328201ee930f069961ae707d59c6627ac92e351ed5b92397cf534d1336ce557"}, + {file = "multidict-6.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b1db4d2093d6b235de76932febf9d50766cf49a5692277b2c28a501c9637f616"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53becb01dd8ebd19d1724bebe369cfa87e4e7f29abbbe5c14c98ce4c383e16cd"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41bb9d1d4c303886e2d85bade86e59885112a7f4277af5ad47ab919a2251f306"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:775b464d31dac90f23192af9c291dc9f423101857e33e9ebf0020a10bfcf4144"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d04d01f0a913202205a598246cf77826fe3baa5a63e9f6ccf1ab0601cf56eca0"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d25594d3b38a2e6cabfdcafef339f754ca6e81fbbdb6650ad773ea9775af35ab"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:35712f1748d409e0707b165bf49f9f17f9e28ae85470c41615778f8d4f7d9609"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1c8082e5814b662de8589d6a06c17e77940d5539080cbab9fe6794b5241b76d9"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:61af8a4b771f1d4d000b3168c12c3120ccf7284502a94aa58c68a81f5afac090"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:448e4a9afccbf297577f2eaa586f07067441e7b63c8362a3540ba5a38dc0f14a"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:233ad16999afc2bbd3e534ad8dbe685ef8ee49a37dbc2cdc9514e57b6d589ced"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:bb933c891cd4da6bdcc9733d048e994e22e1883287ff7540c2a0f3b117605092"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:37b09ca60998e87734699e88c2363abfd457ed18cfbf88e4009a4e83788e63ed"}, + {file = "multidict-6.6.3-cp39-cp39-win32.whl", hash = "sha256:f54cb79d26d0cd420637d184af38f0668558f3c4bbe22ab7ad830e67249f2e0b"}, + {file = "multidict-6.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:295adc9c0551e5d5214b45cf29ca23dbc28c2d197a9c30d51aed9e037cb7c578"}, + {file = "multidict-6.6.3-cp39-cp39-win_arm64.whl", hash = "sha256:15332783596f227db50fb261c2c251a58ac3873c457f3a550a95d5c0aa3c770d"}, + {file = "multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a"}, + {file = "multidict-6.6.3.tar.gz", hash = "sha256:798a9eb12dab0a6c2e29c1de6f3468af5cb2da6053a20dfa3344907eed0937cc"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, + {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, +] + +[[package]] +name = "opentelemetry-api" +version = "1.36.0" +description = "OpenTelemetry Python API" +optional = false +python-versions = ">=3.9" +groups = ["main", "test"] +files = [ + {file = "opentelemetry_api-1.36.0-py3-none-any.whl", hash = "sha256:02f20bcacf666e1333b6b1f04e647dc1d5111f86b8e510238fcc56d7762cda8c"}, + {file = "opentelemetry_api-1.36.0.tar.gz", hash = "sha256:9a72572b9c416d004d492cbc6e61962c0501eaf945ece9b5a0f56597d8348aa0"}, +] + +[package.dependencies] +importlib-metadata = ">=6.0,<8.8.0" +typing-extensions = ">=4.5.0" + +[[package]] +name = "opentelemetry-instrumentation" +version = "0.57b0" +description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "opentelemetry_instrumentation-0.57b0-py3-none-any.whl", hash = "sha256:9109280f44882e07cec2850db28210b90600ae9110b42824d196de357cbddf7e"}, + {file = "opentelemetry_instrumentation-0.57b0.tar.gz", hash = "sha256:f2a30135ba77cdea2b0e1df272f4163c154e978f57214795d72f40befd4fcf05"}, +] + +[package.dependencies] +opentelemetry-api = ">=1.4,<2.0" +opentelemetry-semantic-conventions = "0.57b0" +packaging = ">=18.0" +wrapt = ">=1.0.0,<2.0.0" + +[[package]] +name = "opentelemetry-sdk" +version = "1.36.0" +description = "OpenTelemetry Python SDK" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "opentelemetry_sdk-1.36.0-py3-none-any.whl", hash = "sha256:19fe048b42e98c5c1ffe85b569b7073576ad4ce0bcb6e9b4c6a39e890a6c45fb"}, + {file = "opentelemetry_sdk-1.36.0.tar.gz", hash = "sha256:19c8c81599f51b71670661ff7495c905d8fdf6976e41622d5245b791b06fa581"}, +] + +[package.dependencies] +opentelemetry-api = "1.36.0" +opentelemetry-semantic-conventions = "0.57b0" +typing-extensions = ">=4.5.0" + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.57b0" +description = "OpenTelemetry Semantic Conventions" +optional = false +python-versions = ">=3.9" +groups = ["main", "test"] +files = [ + {file = "opentelemetry_semantic_conventions-0.57b0-py3-none-any.whl", hash = "sha256:757f7e76293294f124c827e514c2a3144f191ef175b069ce8d1211e1e38e9e78"}, + {file = "opentelemetry_semantic_conventions-0.57b0.tar.gz", hash = "sha256:609a4a79c7891b4620d64c7aac6898f872d790d75f22019913a660756f27ff32"}, +] + +[package.dependencies] +opentelemetry-api = "1.36.0" +typing-extensions = ">=4.5.0" + +[[package]] +name = "opentelemetry-semantic-conventions-ai" +version = "0.4.13" +description = "OpenTelemetry Semantic Conventions Extension for Large Language Models" +optional = false +python-versions = "<4,>=3.9" +groups = ["main"] +files = [ + {file = "opentelemetry_semantic_conventions_ai-0.4.13-py3-none-any.whl", hash = "sha256:883a30a6bb5deaec0d646912b5f9f6dcbb9f6f72557b73d0f2560bf25d13e2d5"}, + {file = "opentelemetry_semantic_conventions_ai-0.4.13.tar.gz", hash = "sha256:94efa9fb4ffac18c45f54a3a338ffeb7eedb7e1bb4d147786e77202e159f0036"}, +] + +[[package]] +name = "packaging" +version = "25.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +groups = ["main", "dev", "test"] +files = [ + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4"}, + {file = "platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.14.1)"] + +[[package]] +name = "pluggy" +version = "1.6.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"}, + {file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["coverage", "pytest", "pytest-benchmark"] + +[[package]] +name = "propcache" +version = "0.3.2" +description = "Accelerated property cache" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "propcache-0.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:22d9962a358aedbb7a2e36187ff273adeaab9743373a272976d2e348d08c7770"}, + {file = "propcache-0.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d0fda578d1dc3f77b6b5a5dce3b9ad69a8250a891760a548df850a5e8da87f3"}, + {file = "propcache-0.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3def3da3ac3ce41562d85db655d18ebac740cb3fa4367f11a52b3da9d03a5cc3"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bec58347a5a6cebf239daba9bda37dffec5b8d2ce004d9fe4edef3d2815137e"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55ffda449a507e9fbd4aca1a7d9aa6753b07d6166140e5a18d2ac9bc49eac220"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64a67fb39229a8a8491dd42f864e5e263155e729c2e7ff723d6e25f596b1e8cb"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da1cf97b92b51253d5b68cf5a2b9e0dafca095e36b7f2da335e27dc6172a614"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f559e127134b07425134b4065be45b166183fdcb433cb6c24c8e4149056ad50"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aff2e4e06435d61f11a428360a932138d0ec288b0a31dd9bd78d200bd4a2b339"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4927842833830942a5d0a56e6f4839bc484785b8e1ce8d287359794818633ba0"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6107ddd08b02654a30fb8ad7a132021759d750a82578b94cd55ee2772b6ebea2"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:70bd8b9cd6b519e12859c99f3fc9a93f375ebd22a50296c3a295028bea73b9e7"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2183111651d710d3097338dd1893fcf09c9f54e27ff1a8795495a16a469cc90b"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fb075ad271405dcad8e2a7ffc9a750a3bf70e533bd86e89f0603e607b93aa64c"}, + {file = "propcache-0.3.2-cp310-cp310-win32.whl", hash = "sha256:404d70768080d3d3bdb41d0771037da19d8340d50b08e104ca0e7f9ce55fce70"}, + {file = "propcache-0.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:7435d766f978b4ede777002e6b3b6641dd229cd1da8d3d3106a45770365f9ad9"}, + {file = "propcache-0.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b8d2f607bd8f80ddc04088bc2a037fdd17884a6fcadc47a96e334d72f3717be"}, + {file = "propcache-0.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06766d8f34733416e2e34f46fea488ad5d60726bb9481d3cddf89a6fa2d9603f"}, + {file = "propcache-0.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2dc1f4a1df4fecf4e6f68013575ff4af84ef6f478fe5344317a65d38a8e6dc9"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be29c4f4810c5789cf10ddf6af80b041c724e629fa51e308a7a0fb19ed1ef7bf"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59d61f6970ecbd8ff2e9360304d5c8876a6abd4530cb752c06586849ac8a9dc9"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62180e0b8dbb6b004baec00a7983e4cc52f5ada9cd11f48c3528d8cfa7b96a66"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c144ca294a204c470f18cf4c9d78887810d04a3e2fbb30eea903575a779159df"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5c2a784234c28854878d68978265617aa6dc0780e53d44b4d67f3651a17a9a2"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5745bc7acdafa978ca1642891b82c19238eadc78ba2aaa293c6863b304e552d7"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:c0075bf773d66fa8c9d41f66cc132ecc75e5bb9dd7cce3cfd14adc5ca184cb95"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5f57aa0847730daceff0497f417c9de353c575d8da3579162cc74ac294c5369e"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:eef914c014bf72d18efb55619447e0aecd5fb7c2e3fa7441e2e5d6099bddff7e"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a4092e8549031e82facf3decdbc0883755d5bbcc62d3aea9d9e185549936dcf"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:85871b050f174bc0bfb437efbdb68aaf860611953ed12418e4361bc9c392749e"}, + {file = "propcache-0.3.2-cp311-cp311-win32.whl", hash = "sha256:36c8d9b673ec57900c3554264e630d45980fd302458e4ac801802a7fd2ef7897"}, + {file = "propcache-0.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53af8cb6a781b02d2ea079b5b853ba9430fcbe18a8e3ce647d5982a3ff69f39"}, + {file = "propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10"}, + {file = "propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154"}, + {file = "propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1"}, + {file = "propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1"}, + {file = "propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c"}, + {file = "propcache-0.3.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ca592ed634a73ca002967458187109265e980422116c0a107cf93d81f95af945"}, + {file = "propcache-0.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9ecb0aad4020e275652ba3975740f241bd12a61f1a784df044cf7477a02bc252"}, + {file = "propcache-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f08f1cc28bd2eade7a8a3d2954ccc673bb02062e3e7da09bc75d843386b342f"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a342c834734edb4be5ecb1e9fb48cb64b1e2320fccbd8c54bf8da8f2a84c33"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a544caaae1ac73f1fecfae70ded3e93728831affebd017d53449e3ac052ac1e"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:310d11aa44635298397db47a3ebce7db99a4cc4b9bbdfcf6c98a60c8d5261cf1"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1396592321ac83157ac03a2023aa6cc4a3cc3cfdecb71090054c09e5a7cce3"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cabf5b5902272565e78197edb682017d21cf3b550ba0460ee473753f28d23c1"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0a2f2235ac46a7aa25bdeb03a9e7060f6ecbd213b1f9101c43b3090ffb971ef6"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:92b69e12e34869a6970fd2f3da91669899994b47c98f5d430b781c26f1d9f387"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:54e02207c79968ebbdffc169591009f4474dde3b4679e16634d34c9363ff56b4"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4adfb44cb588001f68c5466579d3f1157ca07f7504fc91ec87862e2b8e556b88"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fd3e6019dc1261cd0291ee8919dd91fbab7b169bb76aeef6c716833a3f65d206"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4c181cad81158d71c41a2bce88edce078458e2dd5ffee7eddd6b05da85079f43"}, + {file = "propcache-0.3.2-cp313-cp313-win32.whl", hash = "sha256:8a08154613f2249519e549de2330cf8e2071c2887309a7b07fb56098f5170a02"}, + {file = "propcache-0.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e41671f1594fc4ab0a6dec1351864713cb3a279910ae8b58f884a88a0a632c05"}, + {file = "propcache-0.3.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9a3cf035bbaf035f109987d9d55dc90e4b0e36e04bbbb95af3055ef17194057b"}, + {file = "propcache-0.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:156c03d07dc1323d8dacaa221fbe028c5c70d16709cdd63502778e6c3ccca1b0"}, + {file = "propcache-0.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74413c0ba02ba86f55cf60d18daab219f7e531620c15f1e23d95563f505efe7e"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f066b437bb3fa39c58ff97ab2ca351db465157d68ed0440abecb21715eb24b28"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1304b085c83067914721e7e9d9917d41ad87696bf70f0bc7dee450e9c71ad0a"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab50cef01b372763a13333b4e54021bdcb291fc9a8e2ccb9c2df98be51bcde6c"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad3b2a085ec259ad2c2842666b2a0a49dea8463579c606426128925af1ed725"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:261fa020c1c14deafd54c76b014956e2f86991af198c51139faf41c4d5e83892"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:46d7f8aa79c927e5f987ee3a80205c987717d3659f035c85cf0c3680526bdb44"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:6d8f3f0eebf73e3c0ff0e7853f68be638b4043c65a70517bb575eff54edd8dbe"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:03c89c1b14a5452cf15403e291c0ccd7751d5b9736ecb2c5bab977ad6c5bcd81"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:0cc17efde71e12bbaad086d679ce575268d70bc123a5a71ea7ad76f70ba30bba"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:acdf05d00696bc0447e278bb53cb04ca72354e562cf88ea6f9107df8e7fd9770"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4445542398bd0b5d32df908031cb1b30d43ac848e20470a878b770ec2dcc6330"}, + {file = "propcache-0.3.2-cp313-cp313t-win32.whl", hash = "sha256:f86e5d7cd03afb3a1db8e9f9f6eff15794e79e791350ac48a8c924e6f439f394"}, + {file = "propcache-0.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9704bedf6e7cbe3c65eca4379a9b53ee6a83749f047808cbb5044d40d7d72198"}, + {file = "propcache-0.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a7fad897f14d92086d6b03fdd2eb844777b0c4d7ec5e3bac0fbae2ab0602bbe5"}, + {file = "propcache-0.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1f43837d4ca000243fd7fd6301947d7cb93360d03cd08369969450cc6b2ce3b4"}, + {file = "propcache-0.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:261df2e9474a5949c46e962065d88eb9b96ce0f2bd30e9d3136bcde84befd8f2"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e514326b79e51f0a177daab1052bc164d9d9e54133797a3a58d24c9c87a3fe6d"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a996adb6904f85894570301939afeee65f072b4fd265ed7e569e8d9058e4ec"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76cace5d6b2a54e55b137669b30f31aa15977eeed390c7cbfb1dafa8dfe9a701"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31248e44b81d59d6addbb182c4720f90b44e1efdc19f58112a3c3a1615fb47ef"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb7fa19dbf88d3857363e0493b999b8011eea856b846305d8c0512dfdf8fbb1"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d81ac3ae39d38588ad0549e321e6f773a4e7cc68e7751524a22885d5bbadf886"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:cc2782eb0f7a16462285b6f8394bbbd0e1ee5f928034e941ffc444012224171b"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:db429c19a6c7e8a1c320e6a13c99799450f411b02251fb1b75e6217cf4a14fcb"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:21d8759141a9e00a681d35a1f160892a36fb6caa715ba0b832f7747da48fb6ea"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2ca6d378f09adb13837614ad2754fa8afaee330254f404299611bce41a8438cb"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:34a624af06c048946709f4278b4176470073deda88d91342665d95f7c6270fbe"}, + {file = "propcache-0.3.2-cp39-cp39-win32.whl", hash = "sha256:4ba3fef1c30f306b1c274ce0b8baaa2c3cdd91f645c48f06394068f37d3837a1"}, + {file = "propcache-0.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:7a2368eed65fc69a7a7a40b27f22e85e7627b74216f0846b04ba5c116e191ec9"}, + {file = "propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f"}, + {file = "propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168"}, +] + +[[package]] +name = "pycodestyle" +version = "2.11.1" +description = "Python style guide checker" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, + {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, +] + +[[package]] +name = "pydantic" +version = "2.11.7" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b"}, + {file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.33.2" +typing-extensions = ">=4.12.2" +typing-inspection = ">=0.4.0" + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8"}, + {file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b"}, + {file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22"}, + {file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640"}, + {file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7"}, + {file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65"}, + {file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc"}, + {file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab"}, + {file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f"}, + {file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d"}, + {file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e"}, + {file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27"}, + {file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pyflakes" +version = "3.2.0" +description = "passive checker of Python programs" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, +] + +[[package]] +name = "pygments" +version = "2.19.2" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pytest" +version = "8.4.1" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7"}, + {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, +] + +[package.dependencies] +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} +iniconfig = ">=1" +packaging = ">=20" +pluggy = ">=1.5,<2" +pygments = ">=2.7.2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.23.8" +description = "Pytest support for asyncio" +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "pytest_asyncio-0.23.8-py3-none-any.whl", hash = "sha256:50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2"}, + {file = "pytest_asyncio-0.23.8.tar.gz", hash = "sha256:759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3"}, +] + +[package.dependencies] +pytest = ">=7.0.0,<9" + +[package.extras] +docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1.0)"] +testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] + +[[package]] +name = "pytest-recording" +version = "0.13.4" +description = "A pytest plugin powered by VCR.py to record and replay HTTP traffic" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "pytest_recording-0.13.4-py3-none-any.whl", hash = "sha256:ad49a434b51b1c4f78e85b1e6b74fdcc2a0a581ca16e52c798c6ace971f7f439"}, + {file = "pytest_recording-0.13.4.tar.gz", hash = "sha256:568d64b2a85992eec4ae0a419c855d5fd96782c5fb016784d86f18053792768c"}, +] + +[package.dependencies] +pytest = ">=3.5.0" +vcrpy = ">=2.0.1" + +[package.extras] +dev = ["pytest-httpbin", "pytest-mock", "requests", "werkzeug (==3.1.3)"] +tests = ["pytest-httpbin", "pytest-mock", "requests", "werkzeug (==3.1.3)"] + +[[package]] +name = "pytest-sugar" +version = "1.0.0" +description = "pytest-sugar is a plugin for pytest that changes the default look and feel of pytest (e.g. progressbar, show tests that fail instantly)." +optional = false +python-versions = "*" +groups = ["test"] +files = [ + {file = "pytest-sugar-1.0.0.tar.gz", hash = "sha256:6422e83258f5b0c04ce7c632176c7732cab5fdb909cb39cca5c9139f81276c0a"}, + {file = "pytest_sugar-1.0.0-py3-none-any.whl", hash = "sha256:70ebcd8fc5795dc457ff8b69d266a4e2e8a74ae0c3edc749381c64b5246c8dfd"}, +] + +[package.dependencies] +packaging = ">=21.3" +pytest = ">=6.2.0" +termcolor = ">=2.1.0" + +[package.extras] +dev = ["black", "flake8", "pre-commit"] + +[[package]] +name = "python-dotenv" +version = "1.1.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc"}, + {file = "python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +groups = ["test"] +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "termcolor" +version = "3.1.0" +description = "ANSI color formatting for output in terminal" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "termcolor-3.1.0-py3-none-any.whl", hash = "sha256:591dd26b5c2ce03b9e43f391264626557873ce1d379019786f99b0c2bee140aa"}, + {file = "termcolor-3.1.0.tar.gz", hash = "sha256:6a6dd7fbee581909eeec6a756cff1d7f7c376063b14e4a298dc4980309e55970"}, +] + +[package.extras] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "tomli" +version = "2.2.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +groups = ["dev", "test"] +markers = "python_version == \"3.10\"" +files = [ + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, +] + +[[package]] +name = "typing-extensions" +version = "4.14.1" +description = "Backported and Experimental Type Hints for Python 3.9+" +optional = false +python-versions = ">=3.9" +groups = ["main", "dev", "test"] +files = [ + {file = "typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76"}, + {file = "typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36"}, +] +markers = {dev = "python_version == \"3.10\""} + +[[package]] +name = "typing-inspection" +version = "0.4.1" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51"}, + {file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28"}, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + +[[package]] +name = "urllib3" +version = "1.26.20" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["test"] +markers = "platform_python_implementation == \"PyPy\"" +files = [ + {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"}, + {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"}, +] + +[package.extras] +brotli = ["brotli (==1.0.9) ; os_name != \"nt\" and python_version < \"3\" and platform_python_implementation == \"CPython\"", "brotli (>=1.0.9) ; python_version >= \"3\" and platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; (os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation != \"CPython\"", "brotlipy (>=0.6.0) ; os_name == \"nt\" and python_version < \"3\""] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress ; python_version == \"2.7\"", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "urllib3" +version = "2.5.0" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.9" +groups = ["test"] +markers = "platform_python_implementation != \"PyPy\"" +files = [ + {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, + {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "vcrpy" +version = "6.0.2" +description = "Automatically mock your HTTP interactions to simplify and speed up testing" +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "vcrpy-6.0.2-py2.py3-none-any.whl", hash = "sha256:40370223861181bc76a5e5d4b743a95058bb1ad516c3c08570316ab592f56cad"}, + {file = "vcrpy-6.0.2.tar.gz", hash = "sha256:88e13d9111846745898411dbc74a75ce85870af96dd320d75f1ee33158addc09"}, +] + +[package.dependencies] +PyYAML = "*" +urllib3 = [ + {version = "*", markers = "platform_python_implementation != \"PyPy\" and python_version >= \"3.10\""}, + {version = "<2", markers = "platform_python_implementation == \"PyPy\""}, +] +wrapt = "*" +yarl = "*" + +[package.extras] +tests = ["Werkzeug (==2.0.3)", "aiohttp", "boto3", "httplib2", "httpx", "pytest", "pytest-aiohttp", "pytest-asyncio", "pytest-cov", "pytest-httpbin", "requests (>=2.22.0)", "tornado", "urllib3"] + +[[package]] +name = "wrapt" +version = "1.17.2" +description = "Module for decorators, wrappers and monkey patching." +optional = false +python-versions = ">=3.8" +groups = ["main", "test"] +files = [ + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, + {file = "wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72"}, + {file = "wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c"}, + {file = "wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62"}, + {file = "wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563"}, + {file = "wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda"}, + {file = "wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000"}, + {file = "wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662"}, + {file = "wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72"}, + {file = "wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317"}, + {file = "wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392"}, + {file = "wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b"}, + {file = "wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae"}, + {file = "wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9"}, + {file = "wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9"}, + {file = "wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998"}, + {file = "wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6"}, + {file = "wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b"}, + {file = "wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504"}, + {file = "wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a"}, + {file = "wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b"}, + {file = "wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb"}, + {file = "wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6"}, + {file = "wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f"}, + {file = "wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555"}, + {file = "wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119"}, + {file = "wrapt-1.17.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a"}, + {file = "wrapt-1.17.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04"}, + {file = "wrapt-1.17.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f"}, + {file = "wrapt-1.17.2-cp38-cp38-win32.whl", hash = "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7"}, + {file = "wrapt-1.17.2-cp38-cp38-win_amd64.whl", hash = "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99039fa9e6306880572915728d7f6c24a86ec57b0a83f6b2491e1d8ab0235b9a"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2696993ee1eebd20b8e4ee4356483c4cb696066ddc24bd70bcbb80fa56ff9061"}, + {file = "wrapt-1.17.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:612dff5db80beef9e649c6d803a8d50c409082f1fedc9dbcdfde2983b2025b82"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c2caa1585c82b3f7a7ab56afef7b3602021d6da34fbc1cf234ff139fed3cd9"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c958bcfd59bacc2d0249dcfe575e71da54f9dcf4a8bdf89c4cb9a68a1170d73f"}, + {file = "wrapt-1.17.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc78a84e2dfbc27afe4b2bd7c80c8db9bca75cc5b85df52bfe634596a1da846b"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ba0f0eb61ef00ea10e00eb53a9129501f52385c44853dbd6c4ad3f403603083f"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1e1fe0e6ab7775fd842bc39e86f6dcfc4507ab0ffe206093e76d61cde37225c8"}, + {file = "wrapt-1.17.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c86563182421896d73858e08e1db93afdd2b947a70064b813d515d66549e15f9"}, + {file = "wrapt-1.17.2-cp39-cp39-win32.whl", hash = "sha256:f393cda562f79828f38a819f4788641ac7c4085f30f1ce1a68672baa686482bb"}, + {file = "wrapt-1.17.2-cp39-cp39-win_amd64.whl", hash = "sha256:36ccae62f64235cf8ddb682073a60519426fdd4725524ae38874adf72b5f2aeb"}, + {file = "wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8"}, + {file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3"}, +] + +[[package]] +name = "writer-sdk" +version = "2.2.1" +description = "The official Python library for the writer API" +optional = false +python-versions = ">=3.8" +groups = ["test"] +files = [ + {file = "writer_sdk-2.2.1-py3-none-any.whl", hash = "sha256:d7fae4a3fc368ba32e26698beaef01b2ad4d28d2bae1aa0612bfa7a703532aad"}, + {file = "writer_sdk-2.2.1.tar.gz", hash = "sha256:10d48a51e69639708a2bb1fedf6da8fae10dd19f9f7474483533c9064e9ce22d"}, +] + +[package.dependencies] +anyio = ">=3.5.0,<5" +distro = ">=1.7.0,<2" +httpx = ">=0.23.0,<1" +jiter = ">=0.4.0,<1" +pydantic = ">=1.9.0,<3" +sniffio = "*" +typing-extensions = ">=4.10,<5" + +[package.extras] +aiohttp = ["aiohttp", "httpx-aiohttp (>=0.1.8)"] + +[[package]] +name = "yarl" +version = "1.20.1" +description = "Yet another URL library" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "yarl-1.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6032e6da6abd41e4acda34d75a816012717000fa6839f37124a47fcefc49bec4"}, + {file = "yarl-1.20.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c7b34d804b8cf9b214f05015c4fee2ebe7ed05cf581e7192c06555c71f4446a"}, + {file = "yarl-1.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c869f2651cc77465f6cd01d938d91a11d9ea5d798738c1dc077f3de0b5e5fed"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62915e6688eb4d180d93840cda4110995ad50c459bf931b8b3775b37c264af1e"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:41ebd28167bc6af8abb97fec1a399f412eec5fd61a3ccbe2305a18b84fb4ca73"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21242b4288a6d56f04ea193adde174b7e347ac46ce6bc84989ff7c1b1ecea84e"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bea21cdae6c7eb02ba02a475f37463abfe0a01f5d7200121b03e605d6a0439f8"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f8a891e4a22a89f5dde7862994485e19db246b70bb288d3ce73a34422e55b23"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd803820d44c8853a109a34e3660e5a61beae12970da479cf44aa2954019bf70"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b982fa7f74c80d5c0c7b5b38f908971e513380a10fecea528091405f519b9ebb"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:33f29ecfe0330c570d997bcf1afd304377f2e48f61447f37e846a6058a4d33b2"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:835ab2cfc74d5eb4a6a528c57f05688099da41cf4957cf08cad38647e4a83b30"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:46b5e0ccf1943a9a6e766b2c2b8c732c55b34e28be57d8daa2b3c1d1d4009309"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:df47c55f7d74127d1b11251fe6397d84afdde0d53b90bedb46a23c0e534f9d24"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76d12524d05841276b0e22573f28d5fbcb67589836772ae9244d90dd7d66aa13"}, + {file = "yarl-1.20.1-cp310-cp310-win32.whl", hash = "sha256:6c4fbf6b02d70e512d7ade4b1f998f237137f1417ab07ec06358ea04f69134f8"}, + {file = "yarl-1.20.1-cp310-cp310-win_amd64.whl", hash = "sha256:aef6c4d69554d44b7f9d923245f8ad9a707d971e6209d51279196d8e8fe1ae16"}, + {file = "yarl-1.20.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47ee6188fea634bdfaeb2cc420f5b3b17332e6225ce88149a17c413c77ff269e"}, + {file = "yarl-1.20.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0f6500f69e8402d513e5eedb77a4e1818691e8f45e6b687147963514d84b44b"}, + {file = "yarl-1.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a8900a42fcdaad568de58887c7b2f602962356908eedb7628eaf6021a6e435b"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bad6d131fda8ef508b36be3ece16d0902e80b88ea7200f030a0f6c11d9e508d4"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:df018d92fe22aaebb679a7f89fe0c0f368ec497e3dda6cb81a567610f04501f1"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f969afbb0a9b63c18d0feecf0db09d164b7a44a053e78a7d05f5df163e43833"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:812303eb4aa98e302886ccda58d6b099e3576b1b9276161469c25803a8db277d"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98c4a7d166635147924aa0bf9bfe8d8abad6fffa6102de9c99ea04a1376f91e8"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12e768f966538e81e6e7550f9086a6236b16e26cd964cf4df35349970f3551cf"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe41919b9d899661c5c28a8b4b0acf704510b88f27f0934ac7a7bebdd8938d5e"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8601bc010d1d7780592f3fc1bdc6c72e2b6466ea34569778422943e1a1f3c389"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:daadbdc1f2a9033a2399c42646fbd46da7992e868a5fe9513860122d7fe7a73f"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:03aa1e041727cb438ca762628109ef1333498b122e4c76dd858d186a37cec845"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:642980ef5e0fa1de5fa96d905c7e00cb2c47cb468bfcac5a18c58e27dbf8d8d1"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:86971e2795584fe8c002356d3b97ef6c61862720eeff03db2a7c86b678d85b3e"}, + {file = "yarl-1.20.1-cp311-cp311-win32.whl", hash = "sha256:597f40615b8d25812f14562699e287f0dcc035d25eb74da72cae043bb884d773"}, + {file = "yarl-1.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:26ef53a9e726e61e9cd1cda6b478f17e350fb5800b4bd1cd9fe81c4d91cfeb2e"}, + {file = "yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9"}, + {file = "yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a"}, + {file = "yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004"}, + {file = "yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5"}, + {file = "yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698"}, + {file = "yarl-1.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0b5ff0fbb7c9f1b1b5ab53330acbfc5247893069e7716840c8e7d5bb7355038a"}, + {file = "yarl-1.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:14f326acd845c2b2e2eb38fb1346c94f7f3b01a4f5c788f8144f9b630bfff9a3"}, + {file = "yarl-1.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f60e4ad5db23f0b96e49c018596707c3ae89f5d0bd97f0ad3684bcbad899f1e7"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49bdd1b8e00ce57e68ba51916e4bb04461746e794e7c4d4bbc42ba2f18297691"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:66252d780b45189975abfed839616e8fd2dbacbdc262105ad7742c6ae58f3e31"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59174e7332f5d153d8f7452a102b103e2e74035ad085f404df2e40e663a22b28"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3968ec7d92a0c0f9ac34d5ecfd03869ec0cab0697c91a45db3fbbd95fe1b653"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1a4fbb50e14396ba3d375f68bfe02215d8e7bc3ec49da8341fe3157f59d2ff5"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11a62c839c3a8eac2410e951301309426f368388ff2f33799052787035793b02"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:041eaa14f73ff5a8986b4388ac6bb43a77f2ea09bf1913df7a35d4646db69e53"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:377fae2fef158e8fd9d60b4c8751387b8d1fb121d3d0b8e9b0be07d1b41e83dc"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1c92f4390e407513f619d49319023664643d3339bd5e5a56a3bebe01bc67ec04"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d25ddcf954df1754ab0f86bb696af765c5bfaba39b74095f27eececa049ef9a4"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:909313577e9619dcff8c31a0ea2aa0a2a828341d92673015456b3ae492e7317b"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:793fd0580cb9664548c6b83c63b43c477212c0260891ddf86809e1c06c8b08f1"}, + {file = "yarl-1.20.1-cp313-cp313-win32.whl", hash = "sha256:468f6e40285de5a5b3c44981ca3a319a4b208ccc07d526b20b12aeedcfa654b7"}, + {file = "yarl-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:495b4ef2fea40596bfc0affe3837411d6aa3371abcf31aac0ccc4bdd64d4ef5c"}, + {file = "yarl-1.20.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f60233b98423aab21d249a30eb27c389c14929f47be8430efa7dbd91493a729d"}, + {file = "yarl-1.20.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6f3eff4cc3f03d650d8755c6eefc844edde99d641d0dcf4da3ab27141a5f8ddf"}, + {file = "yarl-1.20.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:69ff8439d8ba832d6bed88af2c2b3445977eba9a4588b787b32945871c2444e3"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf34efa60eb81dd2645a2e13e00bb98b76c35ab5061a3989c7a70f78c85006d"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8e0fe9364ad0fddab2688ce72cb7a8e61ea42eff3c7caeeb83874a5d479c896c"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f64fbf81878ba914562c672024089e3401974a39767747691c65080a67b18c1"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6342d643bf9a1de97e512e45e4b9560a043347e779a173250824f8b254bd5ce"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56dac5f452ed25eef0f6e3c6a066c6ab68971d96a9fb441791cad0efba6140d3"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7d7f497126d65e2cad8dc5f97d34c27b19199b6414a40cb36b52f41b79014be"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:67e708dfb8e78d8a19169818eeb5c7a80717562de9051bf2413aca8e3696bf16"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:595c07bc79af2494365cc96ddeb772f76272364ef7c80fb892ef9d0649586513"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7bdd2f80f4a7df852ab9ab49484a4dee8030023aa536df41f2d922fd57bf023f"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c03bfebc4ae8d862f853a9757199677ab74ec25424d0ebd68a0027e9c639a390"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:344d1103e9c1523f32a5ed704d576172d2cabed3122ea90b1d4e11fe17c66458"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:88cab98aa4e13e1ade8c141daeedd300a4603b7132819c484841bb7af3edce9e"}, + {file = "yarl-1.20.1-cp313-cp313t-win32.whl", hash = "sha256:b121ff6a7cbd4abc28985b6028235491941b9fe8fe226e6fdc539c977ea1739d"}, + {file = "yarl-1.20.1-cp313-cp313t-win_amd64.whl", hash = "sha256:541d050a355bbbc27e55d906bc91cb6fe42f96c01413dd0f4ed5a5240513874f"}, + {file = "yarl-1.20.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e42ba79e2efb6845ebab49c7bf20306c4edf74a0b20fc6b2ccdd1a219d12fad3"}, + {file = "yarl-1.20.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:41493b9b7c312ac448b7f0a42a089dffe1d6e6e981a2d76205801a023ed26a2b"}, + {file = "yarl-1.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5a5928ff5eb13408c62a968ac90d43f8322fd56d87008b8f9dabf3c0f6ee983"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30c41ad5d717b3961b2dd785593b67d386b73feca30522048d37298fee981805"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:59febc3969b0781682b469d4aca1a5cab7505a4f7b85acf6db01fa500fa3f6ba"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2b6fb3622b7e5bf7a6e5b679a69326b4279e805ed1699d749739a61d242449e"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:749d73611db8d26a6281086f859ea7ec08f9c4c56cec864e52028c8b328db723"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9427925776096e664c39e131447aa20ec738bdd77c049c48ea5200db2237e000"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff70f32aa316393eaf8222d518ce9118148eddb8a53073c2403863b41033eed5"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c7ddf7a09f38667aea38801da8b8d6bfe81df767d9dfc8c88eb45827b195cd1c"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:57edc88517d7fc62b174fcfb2e939fbc486a68315d648d7e74d07fac42cec240"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:dab096ce479d5894d62c26ff4f699ec9072269d514b4edd630a393223f45a0ee"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14a85f3bd2d7bb255be7183e5d7d6e70add151a98edf56a770d6140f5d5f4010"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c89b5c792685dd9cd3fa9761c1b9f46fc240c2a3265483acc1565769996a3f8"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:69e9b141de5511021942a6866990aea6d111c9042235de90e08f94cf972ca03d"}, + {file = "yarl-1.20.1-cp39-cp39-win32.whl", hash = "sha256:b5f307337819cdfdbb40193cad84978a029f847b0a357fbe49f712063cfc4f06"}, + {file = "yarl-1.20.1-cp39-cp39-win_amd64.whl", hash = "sha256:eae7bfe2069f9c1c5b05fc7fe5d612e5bbc089a39309904ee8b829e322dcad00"}, + {file = "yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77"}, + {file = "yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" +propcache = ">=0.2.1" + +[[package]] +name = "zipp" +version = "3.23.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.9" +groups = ["main", "test"] +files = [ + {file = "zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e"}, + {file = "zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166"}, +] + +[package.extras] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +cover = ["pytest-cov"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +enabler = ["pytest-enabler (>=2.2)"] +test = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more_itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +type = ["pytest-mypy"] + +[extras] +instruments = [] + +[metadata] +lock-version = "2.1" +python-versions = ">=3.10,<4" +content-hash = "f5571a9ae789892811b491bc0fe2da07bf170e2ac6eba3f1cb4080f944b7f309" diff --git a/packages/opentelemetry-instrumentation-writer/poetry.toml b/packages/opentelemetry-instrumentation-writer/poetry.toml new file mode 100644 index 0000000000..ab1033bd37 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/poetry.toml @@ -0,0 +1,2 @@ +[virtualenvs] +in-project = true diff --git a/packages/opentelemetry-instrumentation-writer/project.json b/packages/opentelemetry-instrumentation-writer/project.json new file mode 100644 index 0000000000..1c8cc387d5 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/project.json @@ -0,0 +1,78 @@ +{ + "name": "opentelemetry-instrumentation-writer", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "library", + "sourceRoot": "packages/opentelemetry-instrumentation-writer/opentelemetry/instrumentation/writer", + "targets": { + "lock": { + "executor": "@nxlv/python:run-commands", + "options": { + "command": "poetry lock", + "cwd": "packages/opentelemetry-instrumentation-writer" + } + }, + "add": { + "executor": "@nxlv/python:add", + "options": {} + }, + "update": { + "executor": "@nxlv/python:update", + "options": {} + }, + "remove": { + "executor": "@nxlv/python:remove", + "options": {} + }, + "build": { + "executor": "@nxlv/python:build", + "outputs": ["{projectRoot}/dist"], + "options": { + "outputPath": "packages/opentelemetry-instrumentation-writer/dist", + "publish": false, + "lockedVersions": true, + "bundleLocalDependencies": true + } + }, + "install": { + "executor": "@nxlv/python:install", + "options": { + "silent": false, + "args": "", + "cacheDir": ".cache/pypoetry", + "verbose": false, + "debug": false + } + }, + "lint": { + "executor": "@nxlv/python:flake8", + "outputs": [ + "{workspaceRoot}/reports/packages/opentelemetry-instrumentation-writer/pylint.txt" + ], + "options": { + "outputFile": "reports/packages/opentelemetry-instrumentation-writer/pylint.txt" + } + }, + "test": { + "executor": "@nxlv/python:run-commands", + "outputs": [ + "{workspaceRoot}/reports/packages/opentelemetry-instrumentation-writer/unittests", + "{workspaceRoot}/coverage/packages/opentelemetry-instrumentation-writer" + ], + "options": { + "command": "poetry run pytest tests/", + "cwd": "packages/opentelemetry-instrumentation-writer" + } + }, + "build-release": { + "executor": "@nxlv/python:run-commands", + "options": { + "commands": [ + "chmod +x ../../scripts/build-release.sh", + "../../scripts/build-release.sh" + ], + "cwd": "packages/opentelemetry-instrumentation-writer" + } + } + }, + "tags": ["instrumentation"] +} diff --git a/packages/opentelemetry-instrumentation-writer/pyproject.toml b/packages/opentelemetry-instrumentation-writer/pyproject.toml new file mode 100644 index 0000000000..7958d8b27c --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/pyproject.toml @@ -0,0 +1,52 @@ +[tool.coverage.run] +branch = true +source = ["opentelemetry/instrumentation/writer"] + +[tool.coverage.report] +exclude_lines = ['if TYPE_CHECKING:'] +show_missing = true + +[tool.poetry] +name = "opentelemetry-instrumentation-writer" +version = "0.46.2" +description = "OpenTelemetry Writer instrumentation" +authors = ["Yan Tolstoy ", "Writer, Inc. "] +repository = "https://github.com/traceloop/openllmetry/tree/main/packages/opentelemetry-instrumentation-writer" +license = "Apache-2.0" +readme = "README.md" + +[[tool.poetry.packages]] +include = "opentelemetry/instrumentation/writer" + +[tool.poetry.dependencies] +python = ">=3.10,<4" +opentelemetry-api = "^1.28.0" +opentelemetry-instrumentation = ">=0.50b0" +opentelemetry-semantic-conventions = ">=0.50b0" +opentelemetry-semantic-conventions-ai = ">=0.4.11" + +[tool.poetry.group.dev.dependencies] +autopep8 = "^2.2.0" +flake8 = "7.0.0" +black = "^25.1.0" +isort = "^6.0.1" + +[tool.poetry.group.test.dependencies] +pytest = "^8.2.2" +pytest-sugar = "1.0.0" +python-dotenv = "^1.1.1" +vcrpy = "^6.0.1" +pytest-recording = "^0.13.1" +pytest-asyncio = "^0.23.7" +opentelemetry-sdk = "^1.27.0" +writer-sdk = "^2.2.1" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry.extras] +instruments = ["writer"] + +[tool.poetry.plugins."opentelemetry_instrumentor"] +writer = "opentelemetry.instrumentation.writer:WriterInstrumentor" diff --git a/packages/opentelemetry-instrumentation-writer/tests/__init__.py b/packages/opentelemetry-instrumentation-writer/tests/__init__.py new file mode 100644 index 0000000000..52b92d7820 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/__init__.py @@ -0,0 +1 @@ +"""Unit tests for Writer instrumentation""" diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_legacy.yaml new file mode 100644 index 0000000000..b260192a1b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_legacy.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "57e4f58f-f7b1-41d8-be17-a6279c073aad", + "object": "chat.completion", + "model": "palmyra-x4", + "created": "1715361795", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "role": "assistant", + "content": "A joke about OpenTelemetry! Here it is:\n\nWhy did the OpenTelemetry span go to therapy?\n\nBecause it was struggling to instrument its issues!\n\n(Get it? \"Instrument\" has a double meaning here, referring both to the act of collecting metrics and traces in OpenTelemetry, as well as working through one''s problems... okay, maybe it''s just a techie joke)", + "refusal": null, + "tool_calls": [], + "graph_data": { + "sources": [], + "status": "finished", + "subqueries": [] + }, + "llm_data": null, + "translation_data": null, + "web_search_data": null + } + } + ], + "usage": { + "prompt_tokens": 40, + "total_tokens": 340, + "completion_tokens": 300, + "prompt_token_details": { + "cached_tokens": 0 + }, + "completion_token_details": { + "reasoning_tokens": 0 + } + }, + "system_fingerprint": "v1", + "service_tier": "standard" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_choices_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_choices_legacy.yaml new file mode 100644 index 0000000000..10dd922fc8 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_choices_legacy.yaml @@ -0,0 +1,34 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":false,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '180' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"f383320f-f6d7-46b6-966b-7877c6fc0e79","object":"chat.completion","choices":[{"index":0,"finish_reason":"stop","message":{"content":"Sure, + here''s a joke for you:\n\nWhy did the developer go broke? Because he used + up all his metrics on OpenTelemetry and had nothing left to measure his finances!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null},{"index":1,"finish_reason":"stop","message":{"content":"Sure, + here''s a light-hearted joke about OpenTelemetry:\n\nWhy did the developer + go broke? Because he used up all his metrics on OpenTelemetry and had nothing + left to measure!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129713,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":113,"completion_tokens":74,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_choices_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_choices_with_events_with_content.yaml new file mode 100644 index 0000000000..10dd922fc8 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_choices_with_events_with_content.yaml @@ -0,0 +1,34 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":false,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '180' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"f383320f-f6d7-46b6-966b-7877c6fc0e79","object":"chat.completion","choices":[{"index":0,"finish_reason":"stop","message":{"content":"Sure, + here''s a joke for you:\n\nWhy did the developer go broke? Because he used + up all his metrics on OpenTelemetry and had nothing left to measure his finances!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null},{"index":1,"finish_reason":"stop","message":{"content":"Sure, + here''s a light-hearted joke about OpenTelemetry:\n\nWhy did the developer + go broke? Because he used up all his metrics on OpenTelemetry and had nothing + left to measure!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129713,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":113,"completion_tokens":74,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_choices_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_choices_with_events_with_no_content.yaml new file mode 100644 index 0000000000..10dd922fc8 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_choices_with_events_with_no_content.yaml @@ -0,0 +1,34 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":false,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '180' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"f383320f-f6d7-46b6-966b-7877c6fc0e79","object":"chat.completion","choices":[{"index":0,"finish_reason":"stop","message":{"content":"Sure, + here''s a joke for you:\n\nWhy did the developer go broke? Because he used + up all his metrics on OpenTelemetry and had nothing left to measure his finances!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null},{"index":1,"finish_reason":"stop","message":{"content":"Sure, + here''s a light-hearted joke about OpenTelemetry:\n\nWhy did the developer + go broke? Because he used up all his metrics on OpenTelemetry and had nothing + left to measure!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129713,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":113,"completion_tokens":74,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_tool_call_requests_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_tool_call_requests_legacy.yaml new file mode 100644 index 0000000000..b9a7da346b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_tool_call_requests_legacy.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '500' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"48dfd042-80b7-49ac-8cd9-ea800839a0dc","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-429aded05dbe483697404967c567cbd6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}},{"index":null,"id":"chatcmpl-tool-d5ac8291d8b749cda1d03b18baa013fa","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Warsaw\"}"}},{"index":null,"id":"chatcmpl-tool-cd3559179f45440f8b62c90061810568","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lodz\"}"}},{"index":null,"id":"chatcmpl-tool-6d25c273232f49febba77f29ec73f103","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Katowice\"}"}},{"index":null,"id":"chatcmpl-tool-f639e3c813c9409baf07d08ca2e2e456","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Krakow\"}"}},{"index":null,"id":"chatcmpl-tool-f17729a2f75f46afb9a74d66b80580ff","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Poznan\"}"}},{"index":null,"id":"chatcmpl-tool-d3982e8dc28241fbad74d2b7168a3aa6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221098,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_tool_call_requests_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_tool_call_requests_with_events_with_content.yaml new file mode 100644 index 0000000000..b9a7da346b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_tool_call_requests_with_events_with_content.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '500' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"48dfd042-80b7-49ac-8cd9-ea800839a0dc","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-429aded05dbe483697404967c567cbd6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}},{"index":null,"id":"chatcmpl-tool-d5ac8291d8b749cda1d03b18baa013fa","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Warsaw\"}"}},{"index":null,"id":"chatcmpl-tool-cd3559179f45440f8b62c90061810568","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lodz\"}"}},{"index":null,"id":"chatcmpl-tool-6d25c273232f49febba77f29ec73f103","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Katowice\"}"}},{"index":null,"id":"chatcmpl-tool-f639e3c813c9409baf07d08ca2e2e456","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Krakow\"}"}},{"index":null,"id":"chatcmpl-tool-f17729a2f75f46afb9a74d66b80580ff","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Poznan\"}"}},{"index":null,"id":"chatcmpl-tool-d3982e8dc28241fbad74d2b7168a3aa6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221098,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_tool_call_requests_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_tool_call_requests_with_events_with_no_content.yaml new file mode 100644 index 0000000000..b9a7da346b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_multiple_tool_call_requests_with_events_with_no_content.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '500' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"48dfd042-80b7-49ac-8cd9-ea800839a0dc","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-429aded05dbe483697404967c567cbd6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}},{"index":null,"id":"chatcmpl-tool-d5ac8291d8b749cda1d03b18baa013fa","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Warsaw\"}"}},{"index":null,"id":"chatcmpl-tool-cd3559179f45440f8b62c90061810568","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lodz\"}"}},{"index":null,"id":"chatcmpl-tool-6d25c273232f49febba77f29ec73f103","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Katowice\"}"}},{"index":null,"id":"chatcmpl-tool-f639e3c813c9409baf07d08ca2e2e456","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Krakow\"}"}},{"index":null,"id":"chatcmpl-tool-f17729a2f75f46afb9a74d66b80580ff","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Poznan\"}"}},{"index":null,"id":"chatcmpl-tool-d3982e8dc28241fbad74d2b7168a3aa6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221098,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_call_request_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_call_request_legacy.yaml new file mode 100644 index 0000000000..5acb502aa0 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_call_request_legacy.yaml @@ -0,0 +1,32 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '449' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"ff64a3d4-01b4-4e7b-80b7-8e2b22d460da","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-7e03ea39417447e9a1fe7cd391b16476","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755879022,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_call_request_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_call_request_with_events_with_content.yaml new file mode 100644 index 0000000000..5acb502aa0 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_call_request_with_events_with_content.yaml @@ -0,0 +1,32 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '449' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"ff64a3d4-01b4-4e7b-80b7-8e2b22d460da","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-7e03ea39417447e9a1fe7cd391b16476","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755879022,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_call_request_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_call_request_with_events_with_no_content.yaml new file mode 100644 index 0000000000..5acb502aa0 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_call_request_with_events_with_no_content.yaml @@ -0,0 +1,32 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '449' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"ff64a3d4-01b4-4e7b-80b7-8e2b22d460da","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-7e03ea39417447e9a1fe7cd391b16476","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755879022,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_calls_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_calls_legacy.yaml new file mode 100644 index 0000000000..c38d62fd19 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_calls_legacy.yaml @@ -0,0 +1,110 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "What is the weather like today?" + }, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": "{\"location\": \"San Francisco\"}" + } + } + ] + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny." + } + ], + "tools": [ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string" + }, + }, + "required": [ + "location" + ], + "type": "object" + } + }, + "type": "function" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "1fc9b079-5315-43d9-a7f2-82c17b065615", + "object": "chat.completion", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "content": "Today in San Francisco, the weather is 70 degrees and sunny. Enjoy the day!", + "role": "assistant", + "tool_calls": null, + "graph_data": { + "sources": null, + "status": null, + "subqueries": null + }, + "llm_data": null, + "image_data": null, + "translation_data": null, + "web_search_data": null, + "refusal": null + }, + "logprobs": null, + "trace_details": null + } + ], + "created": 1755767284, + "model": "palmyra-x4", + "usage": { + "prompt_tokens": 244, + "total_tokens": 263, + "completion_tokens": 19, + "prompt_token_details": null, + "completion_tokens_details": null + }, + "system_fingerprint": "v1", + "service_tier": null + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_calls_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_calls_with_events_with_content.yaml new file mode 100644 index 0000000000..c38d62fd19 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_calls_with_events_with_content.yaml @@ -0,0 +1,110 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "What is the weather like today?" + }, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": "{\"location\": \"San Francisco\"}" + } + } + ] + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny." + } + ], + "tools": [ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string" + }, + }, + "required": [ + "location" + ], + "type": "object" + } + }, + "type": "function" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "1fc9b079-5315-43d9-a7f2-82c17b065615", + "object": "chat.completion", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "content": "Today in San Francisco, the weather is 70 degrees and sunny. Enjoy the day!", + "role": "assistant", + "tool_calls": null, + "graph_data": { + "sources": null, + "status": null, + "subqueries": null + }, + "llm_data": null, + "image_data": null, + "translation_data": null, + "web_search_data": null, + "refusal": null + }, + "logprobs": null, + "trace_details": null + } + ], + "created": 1755767284, + "model": "palmyra-x4", + "usage": { + "prompt_tokens": 244, + "total_tokens": 263, + "completion_tokens": 19, + "prompt_token_details": null, + "completion_tokens_details": null + }, + "system_fingerprint": "v1", + "service_tier": null + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_calls_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_calls_with_events_with_no_content.yaml new file mode 100644 index 0000000000..c38d62fd19 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_tool_calls_with_events_with_no_content.yaml @@ -0,0 +1,110 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "What is the weather like today?" + }, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": "{\"location\": \"San Francisco\"}" + } + } + ] + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny." + } + ], + "tools": [ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string" + }, + }, + "required": [ + "location" + ], + "type": "object" + } + }, + "type": "function" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "1fc9b079-5315-43d9-a7f2-82c17b065615", + "object": "chat.completion", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "content": "Today in San Francisco, the weather is 70 degrees and sunny. Enjoy the day!", + "role": "assistant", + "tool_calls": null, + "graph_data": { + "sources": null, + "status": null, + "subqueries": null + }, + "llm_data": null, + "image_data": null, + "translation_data": null, + "web_search_data": null, + "refusal": null + }, + "logprobs": null, + "trace_details": null + } + ], + "created": 1755767284, + "model": "palmyra-x4", + "usage": { + "prompt_tokens": 244, + "total_tokens": 263, + "completion_tokens": 19, + "prompt_token_details": null, + "completion_tokens_details": null + }, + "system_fingerprint": "v1", + "service_tier": null + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_with_events_with_content.yaml new file mode 100644 index 0000000000..b260192a1b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_with_events_with_content.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "57e4f58f-f7b1-41d8-be17-a6279c073aad", + "object": "chat.completion", + "model": "palmyra-x4", + "created": "1715361795", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "role": "assistant", + "content": "A joke about OpenTelemetry! Here it is:\n\nWhy did the OpenTelemetry span go to therapy?\n\nBecause it was struggling to instrument its issues!\n\n(Get it? \"Instrument\" has a double meaning here, referring both to the act of collecting metrics and traces in OpenTelemetry, as well as working through one''s problems... okay, maybe it''s just a techie joke)", + "refusal": null, + "tool_calls": [], + "graph_data": { + "sources": [], + "status": "finished", + "subqueries": [] + }, + "llm_data": null, + "translation_data": null, + "web_search_data": null + } + } + ], + "usage": { + "prompt_tokens": 40, + "total_tokens": 340, + "completion_tokens": 300, + "prompt_token_details": { + "cached_tokens": 0 + }, + "completion_token_details": { + "reasoning_tokens": 0 + } + }, + "system_fingerprint": "v1", + "service_tier": "standard" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_with_events_with_no_content.yaml new file mode 100644 index 0000000000..b260192a1b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_chat_with_events_with_no_content.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "57e4f58f-f7b1-41d8-be17-a6279c073aad", + "object": "chat.completion", + "model": "palmyra-x4", + "created": "1715361795", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "role": "assistant", + "content": "A joke about OpenTelemetry! Here it is:\n\nWhy did the OpenTelemetry span go to therapy?\n\nBecause it was struggling to instrument its issues!\n\n(Get it? \"Instrument\" has a double meaning here, referring both to the act of collecting metrics and traces in OpenTelemetry, as well as working through one''s problems... okay, maybe it''s just a techie joke)", + "refusal": null, + "tool_calls": [], + "graph_data": { + "sources": [], + "status": "finished", + "subqueries": [] + }, + "llm_data": null, + "translation_data": null, + "web_search_data": null + } + } + ], + "usage": { + "prompt_tokens": 40, + "total_tokens": 340, + "completion_tokens": 300, + "prompt_token_details": { + "cached_tokens": 0 + }, + "completion_token_details": { + "reasoning_tokens": 0 + } + }, + "system_fingerprint": "v1", + "service_tier": "standard" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_legacy.yaml new file mode 100644 index 0000000000..7388f3fe94 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_legacy.yaml @@ -0,0 +1,195 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '213' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[],"created":1755846931,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":76,"completion_tokens":37,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_choices_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_choices_legacy.yaml new file mode 100644 index 0000000000..4ff41e6c9b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_choices_legacy.yaml @@ -0,0 +1,455 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '219' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[],"created":1756129888,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":134,"completion_tokens":95,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_choices_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_choices_with_events_with_content.yaml new file mode 100644 index 0000000000..4ff41e6c9b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_choices_with_events_with_content.yaml @@ -0,0 +1,455 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '219' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[],"created":1756129888,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":134,"completion_tokens":95,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_choices_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_choices_with_events_with_no_content.yaml new file mode 100644 index 0000000000..4ff41e6c9b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_choices_with_events_with_no_content.yaml @@ -0,0 +1,455 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '219' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[],"created":1756129888,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":134,"completion_tokens":95,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_tool_call_requests_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_tool_call_requests_legacy.yaml new file mode 100644 index 0000000000..33512eda7c --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_tool_call_requests_legacy.yaml @@ -0,0 +1,120 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '539' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[],"created":1756221269,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_tool_call_requests_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_tool_call_requests_with_events_with_content.yaml new file mode 100644 index 0000000000..33512eda7c --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_tool_call_requests_with_events_with_content.yaml @@ -0,0 +1,120 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '539' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[],"created":1756221269,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_tool_call_requests_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_tool_call_requests_with_events_with_no_content.yaml new file mode 100644 index 0000000000..33512eda7c --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_multiple_tool_call_requests_with_events_with_no_content.yaml @@ -0,0 +1,120 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '539' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[],"created":1756221269,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_call_request_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_call_request_legacy.yaml new file mode 100644 index 0000000000..827cea7580 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_call_request_legacy.yaml @@ -0,0 +1,53 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '488' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[],"created":1755878837,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_call_request_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_call_request_with_events_with_content.yaml new file mode 100644 index 0000000000..827cea7580 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_call_request_with_events_with_content.yaml @@ -0,0 +1,53 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '488' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[],"created":1755878837,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_call_request_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_call_request_with_events_with_no_content.yaml new file mode 100644 index 0000000000..827cea7580 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_call_request_with_events_with_no_content.yaml @@ -0,0 +1,53 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '488' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[],"created":1755878837,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_calls_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_calls_legacy.yaml new file mode 100644 index 0000000000..32c36e3218 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_calls_legacy.yaml @@ -0,0 +1,185 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like today?"},{"role":"assistant","content":"","tool_calls":[{"type":"function","function":{"name":"get_current_weather","arguments":"{\"location\": + \"San Francisco\"}"}}]},{"role":"tool","content":"The weather in San Francisco + is 70 degrees and sunny."}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '717' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[],"created":1755858159,"model":"palmyra-x4","usage":{"prompt_tokens":244,"total_tokens":275,"completion_tokens":31,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_calls_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_calls_with_events_with_content.yaml new file mode 100644 index 0000000000..32c36e3218 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_calls_with_events_with_content.yaml @@ -0,0 +1,185 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like today?"},{"role":"assistant","content":"","tool_calls":[{"type":"function","function":{"name":"get_current_weather","arguments":"{\"location\": + \"San Francisco\"}"}}]},{"role":"tool","content":"The weather in San Francisco + is 70 degrees and sunny."}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '717' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[],"created":1755858159,"model":"palmyra-x4","usage":{"prompt_tokens":244,"total_tokens":275,"completion_tokens":31,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_calls_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_calls_with_events_with_no_content.yaml new file mode 100644 index 0000000000..32c36e3218 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_tool_calls_with_events_with_no_content.yaml @@ -0,0 +1,185 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like today?"},{"role":"assistant","content":"","tool_calls":[{"type":"function","function":{"name":"get_current_weather","arguments":"{\"location\": + \"San Francisco\"}"}}]},{"role":"tool","content":"The weather in San Francisco + is 70 degrees and sunny."}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '717' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[],"created":1755858159,"model":"palmyra-x4","usage":{"prompt_tokens":244,"total_tokens":275,"completion_tokens":31,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_with_events_with_content.yaml new file mode 100644 index 0000000000..7388f3fe94 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_with_events_with_content.yaml @@ -0,0 +1,195 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '213' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[],"created":1755846931,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":76,"completion_tokens":37,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_with_events_with_no_content.yaml new file mode 100644 index 0000000000..7388f3fe94 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_async_streaming_chat_with_events_with_no_content.yaml @@ -0,0 +1,195 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '213' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[],"created":1755846931,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":76,"completion_tokens":37,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_legacy.yaml new file mode 100644 index 0000000000..b260192a1b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_legacy.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "57e4f58f-f7b1-41d8-be17-a6279c073aad", + "object": "chat.completion", + "model": "palmyra-x4", + "created": "1715361795", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "role": "assistant", + "content": "A joke about OpenTelemetry! Here it is:\n\nWhy did the OpenTelemetry span go to therapy?\n\nBecause it was struggling to instrument its issues!\n\n(Get it? \"Instrument\" has a double meaning here, referring both to the act of collecting metrics and traces in OpenTelemetry, as well as working through one''s problems... okay, maybe it''s just a techie joke)", + "refusal": null, + "tool_calls": [], + "graph_data": { + "sources": [], + "status": "finished", + "subqueries": [] + }, + "llm_data": null, + "translation_data": null, + "web_search_data": null + } + } + ], + "usage": { + "prompt_tokens": 40, + "total_tokens": 340, + "completion_tokens": 300, + "prompt_token_details": { + "cached_tokens": 0 + }, + "completion_token_details": { + "reasoning_tokens": 0 + } + }, + "system_fingerprint": "v1", + "service_tier": "standard" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_choices_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_choices_legacy.yaml new file mode 100644 index 0000000000..10dd922fc8 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_choices_legacy.yaml @@ -0,0 +1,34 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":false,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '180' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"f383320f-f6d7-46b6-966b-7877c6fc0e79","object":"chat.completion","choices":[{"index":0,"finish_reason":"stop","message":{"content":"Sure, + here''s a joke for you:\n\nWhy did the developer go broke? Because he used + up all his metrics on OpenTelemetry and had nothing left to measure his finances!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null},{"index":1,"finish_reason":"stop","message":{"content":"Sure, + here''s a light-hearted joke about OpenTelemetry:\n\nWhy did the developer + go broke? Because he used up all his metrics on OpenTelemetry and had nothing + left to measure!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129713,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":113,"completion_tokens":74,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_choices_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_choices_with_events_with_content.yaml new file mode 100644 index 0000000000..10dd922fc8 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_choices_with_events_with_content.yaml @@ -0,0 +1,34 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":false,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '180' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"f383320f-f6d7-46b6-966b-7877c6fc0e79","object":"chat.completion","choices":[{"index":0,"finish_reason":"stop","message":{"content":"Sure, + here''s a joke for you:\n\nWhy did the developer go broke? Because he used + up all his metrics on OpenTelemetry and had nothing left to measure his finances!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null},{"index":1,"finish_reason":"stop","message":{"content":"Sure, + here''s a light-hearted joke about OpenTelemetry:\n\nWhy did the developer + go broke? Because he used up all his metrics on OpenTelemetry and had nothing + left to measure!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129713,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":113,"completion_tokens":74,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_choices_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_choices_with_events_with_no_content.yaml new file mode 100644 index 0000000000..10dd922fc8 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_choices_with_events_with_no_content.yaml @@ -0,0 +1,34 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":false,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '180' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"f383320f-f6d7-46b6-966b-7877c6fc0e79","object":"chat.completion","choices":[{"index":0,"finish_reason":"stop","message":{"content":"Sure, + here''s a joke for you:\n\nWhy did the developer go broke? Because he used + up all his metrics on OpenTelemetry and had nothing left to measure his finances!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null},{"index":1,"finish_reason":"stop","message":{"content":"Sure, + here''s a light-hearted joke about OpenTelemetry:\n\nWhy did the developer + go broke? Because he used up all his metrics on OpenTelemetry and had nothing + left to measure!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129713,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":113,"completion_tokens":74,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_tool_call_requests_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_tool_call_requests_legacy.yaml new file mode 100644 index 0000000000..b9a7da346b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_tool_call_requests_legacy.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '500' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"48dfd042-80b7-49ac-8cd9-ea800839a0dc","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-429aded05dbe483697404967c567cbd6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}},{"index":null,"id":"chatcmpl-tool-d5ac8291d8b749cda1d03b18baa013fa","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Warsaw\"}"}},{"index":null,"id":"chatcmpl-tool-cd3559179f45440f8b62c90061810568","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lodz\"}"}},{"index":null,"id":"chatcmpl-tool-6d25c273232f49febba77f29ec73f103","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Katowice\"}"}},{"index":null,"id":"chatcmpl-tool-f639e3c813c9409baf07d08ca2e2e456","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Krakow\"}"}},{"index":null,"id":"chatcmpl-tool-f17729a2f75f46afb9a74d66b80580ff","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Poznan\"}"}},{"index":null,"id":"chatcmpl-tool-d3982e8dc28241fbad74d2b7168a3aa6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221098,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_tool_call_requests_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_tool_call_requests_with_events_with_content.yaml new file mode 100644 index 0000000000..b9a7da346b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_tool_call_requests_with_events_with_content.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '500' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"48dfd042-80b7-49ac-8cd9-ea800839a0dc","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-429aded05dbe483697404967c567cbd6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}},{"index":null,"id":"chatcmpl-tool-d5ac8291d8b749cda1d03b18baa013fa","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Warsaw\"}"}},{"index":null,"id":"chatcmpl-tool-cd3559179f45440f8b62c90061810568","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lodz\"}"}},{"index":null,"id":"chatcmpl-tool-6d25c273232f49febba77f29ec73f103","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Katowice\"}"}},{"index":null,"id":"chatcmpl-tool-f639e3c813c9409baf07d08ca2e2e456","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Krakow\"}"}},{"index":null,"id":"chatcmpl-tool-f17729a2f75f46afb9a74d66b80580ff","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Poznan\"}"}},{"index":null,"id":"chatcmpl-tool-d3982e8dc28241fbad74d2b7168a3aa6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221098,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_tool_call_requests_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_tool_call_requests_with_events_with_no_content.yaml new file mode 100644 index 0000000000..b9a7da346b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_multiple_tool_call_requests_with_events_with_no_content.yaml @@ -0,0 +1,39 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '500' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"48dfd042-80b7-49ac-8cd9-ea800839a0dc","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-429aded05dbe483697404967c567cbd6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}},{"index":null,"id":"chatcmpl-tool-d5ac8291d8b749cda1d03b18baa013fa","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Warsaw\"}"}},{"index":null,"id":"chatcmpl-tool-cd3559179f45440f8b62c90061810568","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lodz\"}"}},{"index":null,"id":"chatcmpl-tool-6d25c273232f49febba77f29ec73f103","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Katowice\"}"}},{"index":null,"id":"chatcmpl-tool-f639e3c813c9409baf07d08ca2e2e456","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Krakow\"}"}},{"index":null,"id":"chatcmpl-tool-f17729a2f75f46afb9a74d66b80580ff","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Poznan\"}"}},{"index":null,"id":"chatcmpl-tool-d3982e8dc28241fbad74d2b7168a3aa6","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221098,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_call_request_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_call_request_legacy.yaml new file mode 100644 index 0000000000..5acb502aa0 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_call_request_legacy.yaml @@ -0,0 +1,32 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '449' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"ff64a3d4-01b4-4e7b-80b7-8e2b22d460da","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-7e03ea39417447e9a1fe7cd391b16476","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755879022,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_call_request_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_call_request_with_events_with_content.yaml new file mode 100644 index 0000000000..5acb502aa0 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_call_request_with_events_with_content.yaml @@ -0,0 +1,32 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '449' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"ff64a3d4-01b4-4e7b-80b7-8e2b22d460da","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-7e03ea39417447e9a1fe7cd391b16476","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755879022,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_call_request_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_call_request_with_events_with_no_content.yaml new file mode 100644 index 0000000000..5acb502aa0 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_call_request_with_events_with_no_content.yaml @@ -0,0 +1,32 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":false,"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '449' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: '{"id":"ff64a3d4-01b4-4e7b-80b7-8e2b22d460da","object":"chat.completion","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":[{"index":null,"id":"chatcmpl-tool-7e03ea39417447e9a1fe7cd391b16476","type":"function","function":{"name":"get_weather","arguments":"{\"location\": + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755879022,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_calls_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_calls_legacy.yaml new file mode 100644 index 0000000000..c38d62fd19 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_calls_legacy.yaml @@ -0,0 +1,110 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "What is the weather like today?" + }, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": "{\"location\": \"San Francisco\"}" + } + } + ] + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny." + } + ], + "tools": [ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string" + }, + }, + "required": [ + "location" + ], + "type": "object" + } + }, + "type": "function" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "1fc9b079-5315-43d9-a7f2-82c17b065615", + "object": "chat.completion", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "content": "Today in San Francisco, the weather is 70 degrees and sunny. Enjoy the day!", + "role": "assistant", + "tool_calls": null, + "graph_data": { + "sources": null, + "status": null, + "subqueries": null + }, + "llm_data": null, + "image_data": null, + "translation_data": null, + "web_search_data": null, + "refusal": null + }, + "logprobs": null, + "trace_details": null + } + ], + "created": 1755767284, + "model": "palmyra-x4", + "usage": { + "prompt_tokens": 244, + "total_tokens": 263, + "completion_tokens": 19, + "prompt_token_details": null, + "completion_tokens_details": null + }, + "system_fingerprint": "v1", + "service_tier": null + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_calls_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_calls_with_events_with_content.yaml new file mode 100644 index 0000000000..c38d62fd19 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_calls_with_events_with_content.yaml @@ -0,0 +1,110 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "What is the weather like today?" + }, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": "{\"location\": \"San Francisco\"}" + } + } + ] + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny." + } + ], + "tools": [ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string" + }, + }, + "required": [ + "location" + ], + "type": "object" + } + }, + "type": "function" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "1fc9b079-5315-43d9-a7f2-82c17b065615", + "object": "chat.completion", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "content": "Today in San Francisco, the weather is 70 degrees and sunny. Enjoy the day!", + "role": "assistant", + "tool_calls": null, + "graph_data": { + "sources": null, + "status": null, + "subqueries": null + }, + "llm_data": null, + "image_data": null, + "translation_data": null, + "web_search_data": null, + "refusal": null + }, + "logprobs": null, + "trace_details": null + } + ], + "created": 1755767284, + "model": "palmyra-x4", + "usage": { + "prompt_tokens": 244, + "total_tokens": 263, + "completion_tokens": 19, + "prompt_token_details": null, + "completion_tokens_details": null + }, + "system_fingerprint": "v1", + "service_tier": null + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_calls_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_calls_with_events_with_no_content.yaml new file mode 100644 index 0000000000..c38d62fd19 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_tool_calls_with_events_with_no_content.yaml @@ -0,0 +1,110 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "What is the weather like today?" + }, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": "{\"location\": \"San Francisco\"}" + } + } + ] + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny." + } + ], + "tools": [ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string" + }, + }, + "required": [ + "location" + ], + "type": "object" + } + }, + "type": "function" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "1fc9b079-5315-43d9-a7f2-82c17b065615", + "object": "chat.completion", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "content": "Today in San Francisco, the weather is 70 degrees and sunny. Enjoy the day!", + "role": "assistant", + "tool_calls": null, + "graph_data": { + "sources": null, + "status": null, + "subqueries": null + }, + "llm_data": null, + "image_data": null, + "translation_data": null, + "web_search_data": null, + "refusal": null + }, + "logprobs": null, + "trace_details": null + } + ], + "created": 1755767284, + "model": "palmyra-x4", + "usage": { + "prompt_tokens": 244, + "total_tokens": 263, + "completion_tokens": 19, + "prompt_token_details": null, + "completion_tokens_details": null + }, + "system_fingerprint": "v1", + "service_tier": null + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_with_events_with_content.yaml new file mode 100644 index 0000000000..b260192a1b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_with_events_with_content.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "57e4f58f-f7b1-41d8-be17-a6279c073aad", + "object": "chat.completion", + "model": "palmyra-x4", + "created": "1715361795", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "role": "assistant", + "content": "A joke about OpenTelemetry! Here it is:\n\nWhy did the OpenTelemetry span go to therapy?\n\nBecause it was struggling to instrument its issues!\n\n(Get it? \"Instrument\" has a double meaning here, referring both to the act of collecting metrics and traces in OpenTelemetry, as well as working through one''s problems... okay, maybe it''s just a techie joke)", + "refusal": null, + "tool_calls": [], + "graph_data": { + "sources": [], + "status": "finished", + "subqueries": [] + }, + "llm_data": null, + "translation_data": null, + "web_search_data": null + } + } + ], + "usage": { + "prompt_tokens": 40, + "total_tokens": 340, + "completion_tokens": 300, + "prompt_token_details": { + "cached_tokens": 0 + }, + "completion_token_details": { + "reasoning_tokens": 0 + } + }, + "system_fingerprint": "v1", + "service_tier": "standard" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_with_events_with_no_content.yaml new file mode 100644 index 0000000000..b260192a1b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_chat_with_events_with_no_content.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "57e4f58f-f7b1-41d8-be17-a6279c073aad", + "object": "chat.completion", + "model": "palmyra-x4", + "created": "1715361795", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "role": "assistant", + "content": "A joke about OpenTelemetry! Here it is:\n\nWhy did the OpenTelemetry span go to therapy?\n\nBecause it was struggling to instrument its issues!\n\n(Get it? \"Instrument\" has a double meaning here, referring both to the act of collecting metrics and traces in OpenTelemetry, as well as working through one''s problems... okay, maybe it''s just a techie joke)", + "refusal": null, + "tool_calls": [], + "graph_data": { + "sources": [], + "status": "finished", + "subqueries": [] + }, + "llm_data": null, + "translation_data": null, + "web_search_data": null + } + } + ], + "usage": { + "prompt_tokens": 40, + "total_tokens": 340, + "completion_tokens": 300, + "prompt_token_details": { + "cached_tokens": 0 + }, + "completion_token_details": { + "reasoning_tokens": 0 + } + }, + "system_fingerprint": "v1", + "service_tier": "standard" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_legacy.yaml new file mode 100644 index 0000000000..7388f3fe94 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_legacy.yaml @@ -0,0 +1,195 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '213' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[],"created":1755846931,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":76,"completion_tokens":37,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_choices_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_choices_legacy.yaml new file mode 100644 index 0000000000..4ff41e6c9b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_choices_legacy.yaml @@ -0,0 +1,455 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '219' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[],"created":1756129888,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":134,"completion_tokens":95,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_choices_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_choices_with_events_with_content.yaml new file mode 100644 index 0000000000..4ff41e6c9b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_choices_with_events_with_content.yaml @@ -0,0 +1,455 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '219' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[],"created":1756129888,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":134,"completion_tokens":95,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_choices_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_choices_with_events_with_no_content.yaml new file mode 100644 index 0000000000..4ff41e6c9b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_choices_with_events_with_no_content.yaml @@ -0,0 +1,455 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"n":2,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '219' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + software","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + break","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + up","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + decide","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + with","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + use","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + application","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + commit","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + wanted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + using","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + bugs","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + back","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + their","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + always","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + roots","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + too","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + \"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"secure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + heard","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"\"","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + its","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + performance","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + was","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + best","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + shovel","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + town","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[{"index":1,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756129888,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"d6d24844-6bce-4b9a-a601-ed43f8679ed3","object":"chat.completion.chunk","choices":[],"created":1756129888,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":134,"completion_tokens":95,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_tool_call_requests_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_tool_call_requests_legacy.yaml new file mode 100644 index 0000000000..33512eda7c --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_tool_call_requests_legacy.yaml @@ -0,0 +1,120 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '539' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[],"created":1756221269,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_tool_call_requests_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_tool_call_requests_with_events_with_content.yaml new file mode 100644 index 0000000000..33512eda7c --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_tool_call_requests_with_events_with_content.yaml @@ -0,0 +1,120 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '539' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[],"created":1756221269,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_tool_call_requests_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_tool_call_requests_with_events_with_no_content.yaml new file mode 100644 index 0000000000..33512eda7c --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_multiple_tool_call_requests_with_events_with_no_content.yaml @@ -0,0 +1,120 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane, + Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '539' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-5ac885d9b1b54a66b11f014a1ecb5b9d","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":"chatcmpl-tool-368eedfd835c4186b5cb97c69d803cf0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":1,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Warsaw\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":"chatcmpl-tool-af73f77676e3402e9e04a4f867552ddd","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":2,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lodz\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":"chatcmpl-tool-e9d9b531d7954d789c1ccc21dbdd3be0","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":3,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Katowice\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":"chatcmpl-tool-a5155160b47c4f5c9f02eb234cac9e7c","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":4,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Krakow\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":"chatcmpl-tool-aad9face17d14c7296dd569213e61f47","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":5,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Poznan\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":"chatcmpl-tool-938c427496df48f3b2efb60d6a854461","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":6,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Lublin\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1756221269,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1908e68d-0a48-4394-a155-d160bca81742","object":"chat.completion.chunk","choices":[],"created":1756221269,"model":"palmyra-x4","usage":{"prompt_tokens":212,"total_tokens":365,"completion_tokens":153,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_call_request_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_call_request_legacy.yaml new file mode 100644 index 0000000000..827cea7580 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_call_request_legacy.yaml @@ -0,0 +1,53 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '488' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[],"created":1755878837,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_call_request_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_call_request_with_events_with_content.yaml new file mode 100644 index 0000000000..827cea7580 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_call_request_with_events_with_content.yaml @@ -0,0 +1,53 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '488' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[],"created":1755878837,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_call_request_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_call_request_with_events_with_no_content.yaml new file mode 100644 index 0000000000..827cea7580 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_call_request_with_events_with_no_content.yaml @@ -0,0 +1,53 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like in Zakopane + today?"}],"model":"palmyra-x4","max_tokens":340,"stop":"I am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '488' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":"chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2","type":"function","function":{"name":"get_weather","arguments":null}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":"{\"location\":"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":[{"index":0,"id":null,"type":null,"function":{"name":null,"arguments":" + \"Zakopane\"}"}}],"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"tool_calls","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755878837,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"a2c90cfe-1887-47df-9b3b-f8a20ba21ff2","object":"chat.completion.chunk","choices":[],"created":1755878837,"model":"palmyra-x4","usage":{"prompt_tokens":194,"total_tokens":216,"completion_tokens":22,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_calls_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_calls_legacy.yaml new file mode 100644 index 0000000000..32c36e3218 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_calls_legacy.yaml @@ -0,0 +1,185 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like today?"},{"role":"assistant","content":"","tool_calls":[{"type":"function","function":{"name":"get_current_weather","arguments":"{\"location\": + \"San Francisco\"}"}}]},{"role":"tool","content":"The weather in San Francisco + is 70 degrees and sunny."}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '717' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[],"created":1755858159,"model":"palmyra-x4","usage":{"prompt_tokens":244,"total_tokens":275,"completion_tokens":31,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_calls_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_calls_with_events_with_content.yaml new file mode 100644 index 0000000000..32c36e3218 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_calls_with_events_with_content.yaml @@ -0,0 +1,185 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like today?"},{"role":"assistant","content":"","tool_calls":[{"type":"function","function":{"name":"get_current_weather","arguments":"{\"location\": + \"San Francisco\"}"}}]},{"role":"tool","content":"The weather in San Francisco + is 70 degrees and sunny."}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '717' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[],"created":1755858159,"model":"palmyra-x4","usage":{"prompt_tokens":244,"total_tokens":275,"completion_tokens":31,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_calls_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_calls_with_events_with_no_content.yaml new file mode 100644 index 0000000000..32c36e3218 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_tool_calls_with_events_with_no_content.yaml @@ -0,0 +1,185 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"What is the weather like today?"},{"role":"assistant","content":"","tool_calls":[{"type":"function","function":{"name":"get_current_weather","arguments":"{\"location\": + \"San Francisco\"}"}}]},{"role":"tool","content":"The weather in San Francisco + is 70 degrees and sunny."}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"tools":[{"function":{"description":"Return + weather in the specific location.","name":"get_weather","parameters":{"properties":{"location":{"description":"Location + to return weather at","type":"string"}},"required":["location"],"type":"object"}},"type":"function"}],"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '717' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"The","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + weather","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + in","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + San","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Francisco","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + today","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + is","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + ","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"7","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"0","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + degrees","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + sunny","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":".","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + If","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + you","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''re","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + planning","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + to","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + out","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + seems","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + like","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + great","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + day","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + for","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + it","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755858159,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"6843b5fa-3506-4df8-9e34-87151e394133","object":"chat.completion.chunk","choices":[],"created":1755858159,"model":"palmyra-x4","usage":{"prompt_tokens":244,"total_tokens":275,"completion_tokens":31,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_with_events_with_content.yaml new file mode 100644 index 0000000000..7388f3fe94 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_with_events_with_content.yaml @@ -0,0 +1,195 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '213' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[],"created":1755846931,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":76,"completion_tokens":37,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_with_events_with_no_content.yaml new file mode 100644 index 0000000000..7388f3fe94 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_chat/test_writer_streaming_chat_with_events_with_no_content.yaml @@ -0,0 +1,195 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '213' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[],"created":1755846931,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":76,"completion_tokens":37,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_completions_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_completions_legacy.yaml new file mode 100644 index 0000000000..247b1c4acb --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_completions_legacy.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: + '{ + "model": "palmyra-x4", + "prompt": "Tell me a joke about OpenTelemetry", + "max_tokens": 150, + "temperature": 0.7, + "top_p": 0.9, + "stop": [ + "." + ], + "stream": false + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: + '{ + "choices": [ + { + "text": "A joke about OpenTelemetry!\n\nWhy did the OpenTelemetry collector go to therapy?\n\nBecause it was feeling instrumented, but could not seem to get a handle on its spans!", + "log_probs": null + } + ], + "model": "palmyra-x4" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 \ No newline at end of file diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_completions_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_completions_with_events_with_content.yaml new file mode 100644 index 0000000000..247b1c4acb --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_completions_with_events_with_content.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: + '{ + "model": "palmyra-x4", + "prompt": "Tell me a joke about OpenTelemetry", + "max_tokens": 150, + "temperature": 0.7, + "top_p": 0.9, + "stop": [ + "." + ], + "stream": false + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: + '{ + "choices": [ + { + "text": "A joke about OpenTelemetry!\n\nWhy did the OpenTelemetry collector go to therapy?\n\nBecause it was feeling instrumented, but could not seem to get a handle on its spans!", + "log_probs": null + } + ], + "model": "palmyra-x4" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 \ No newline at end of file diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_completions_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_completions_with_events_with_no_content.yaml new file mode 100644 index 0000000000..247b1c4acb --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_completions_with_events_with_no_content.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: + '{ + "model": "palmyra-x4", + "prompt": "Tell me a joke about OpenTelemetry", + "max_tokens": 150, + "temperature": 0.7, + "top_p": 0.9, + "stop": [ + "." + ], + "stream": false + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: + '{ + "choices": [ + { + "text": "A joke about OpenTelemetry!\n\nWhy did the OpenTelemetry collector go to therapy?\n\nBecause it was feeling instrumented, but could not seem to get a handle on its spans!", + "log_probs": null + } + ], + "model": "palmyra-x4" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 \ No newline at end of file diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_streaming_completions_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_streaming_completions_legacy.yaml new file mode 100644 index 0000000000..ac6862a2bd --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_streaming_completions_legacy.yaml @@ -0,0 +1,205 @@ +interactions: +- request: + body: '{"model":"palmyra-x4","prompt":"Tell me a joke about OpenTelemetry","max_tokens":340,"stop":["I + am"],"stream":true,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '145' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: 'data: {"value":"Sure"} + + + data: {"value":","} + + + data: {"value":" here"} + + + data: {"value":"''s"} + + + data: {"value":" a"} + + + data: {"value":" light"} + + + data: {"value":"-hearted"} + + + data: {"value":" joke"} + + + data: {"value":" about"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":":\n\n"} + + + data: {"value":"Why"} + + + data: {"value":" did"} + + + data: {"value":" the"} + + + data: {"value":" developer"} + + + data: {"value":" decide"} + + + data: {"value":" to"} + + + data: {"value":" use"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":" for"} + + + data: {"value":" his"} + + + data: {"value":" project"} + + + data: {"value":"?\n\n"} + + + data: {"value":"Because"} + + + data: {"value":" he"} + + + data: {"value":" wanted"} + + + data: {"value":" to"} + + + data: {"value":" make"} + + + data: {"value":" sure"} + + + data: {"value":" his"} + + + data: {"value":" application"} + + + data: {"value":" was"} + + + data: {"value":" fully"} + + + data: {"value":" instrument"} + + + data: {"value":"ed"} + + + data: {"value":","} + + + data: {"value":" and"} + + + data: {"value":" he"} + + + data: {"value":" didn"} + + + data: {"value":"''t"} + + + data: {"value":" want"} + + + data: {"value":" to"} + + + data: {"value":" trace"} + + + data: {"value":" back"} + + + data: {"value":" his"} + + + data: {"value":" steps"} + + + data: {"value":" to"} + + + data: {"value":" find"} + + + data: {"value":" out"} + + + data: {"value":" why"} + + + data: {"value":" it"} + + + data: {"value":" wasn"} + + + data: {"value":"''t"} + + + data: {"value":"!"} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_streaming_completions_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_streaming_completions_with_events_with_content.yaml new file mode 100644 index 0000000000..ac6862a2bd --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_streaming_completions_with_events_with_content.yaml @@ -0,0 +1,205 @@ +interactions: +- request: + body: '{"model":"palmyra-x4","prompt":"Tell me a joke about OpenTelemetry","max_tokens":340,"stop":["I + am"],"stream":true,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '145' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: 'data: {"value":"Sure"} + + + data: {"value":","} + + + data: {"value":" here"} + + + data: {"value":"''s"} + + + data: {"value":" a"} + + + data: {"value":" light"} + + + data: {"value":"-hearted"} + + + data: {"value":" joke"} + + + data: {"value":" about"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":":\n\n"} + + + data: {"value":"Why"} + + + data: {"value":" did"} + + + data: {"value":" the"} + + + data: {"value":" developer"} + + + data: {"value":" decide"} + + + data: {"value":" to"} + + + data: {"value":" use"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":" for"} + + + data: {"value":" his"} + + + data: {"value":" project"} + + + data: {"value":"?\n\n"} + + + data: {"value":"Because"} + + + data: {"value":" he"} + + + data: {"value":" wanted"} + + + data: {"value":" to"} + + + data: {"value":" make"} + + + data: {"value":" sure"} + + + data: {"value":" his"} + + + data: {"value":" application"} + + + data: {"value":" was"} + + + data: {"value":" fully"} + + + data: {"value":" instrument"} + + + data: {"value":"ed"} + + + data: {"value":","} + + + data: {"value":" and"} + + + data: {"value":" he"} + + + data: {"value":" didn"} + + + data: {"value":"''t"} + + + data: {"value":" want"} + + + data: {"value":" to"} + + + data: {"value":" trace"} + + + data: {"value":" back"} + + + data: {"value":" his"} + + + data: {"value":" steps"} + + + data: {"value":" to"} + + + data: {"value":" find"} + + + data: {"value":" out"} + + + data: {"value":" why"} + + + data: {"value":" it"} + + + data: {"value":" wasn"} + + + data: {"value":"''t"} + + + data: {"value":"!"} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_streaming_completions_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_streaming_completions_with_events_with_no_content.yaml new file mode 100644 index 0000000000..ac6862a2bd --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_async_streaming_completions_with_events_with_no_content.yaml @@ -0,0 +1,205 @@ +interactions: +- request: + body: '{"model":"palmyra-x4","prompt":"Tell me a joke about OpenTelemetry","max_tokens":340,"stop":["I + am"],"stream":true,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '145' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: 'data: {"value":"Sure"} + + + data: {"value":","} + + + data: {"value":" here"} + + + data: {"value":"''s"} + + + data: {"value":" a"} + + + data: {"value":" light"} + + + data: {"value":"-hearted"} + + + data: {"value":" joke"} + + + data: {"value":" about"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":":\n\n"} + + + data: {"value":"Why"} + + + data: {"value":" did"} + + + data: {"value":" the"} + + + data: {"value":" developer"} + + + data: {"value":" decide"} + + + data: {"value":" to"} + + + data: {"value":" use"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":" for"} + + + data: {"value":" his"} + + + data: {"value":" project"} + + + data: {"value":"?\n\n"} + + + data: {"value":"Because"} + + + data: {"value":" he"} + + + data: {"value":" wanted"} + + + data: {"value":" to"} + + + data: {"value":" make"} + + + data: {"value":" sure"} + + + data: {"value":" his"} + + + data: {"value":" application"} + + + data: {"value":" was"} + + + data: {"value":" fully"} + + + data: {"value":" instrument"} + + + data: {"value":"ed"} + + + data: {"value":","} + + + data: {"value":" and"} + + + data: {"value":" he"} + + + data: {"value":" didn"} + + + data: {"value":"''t"} + + + data: {"value":" want"} + + + data: {"value":" to"} + + + data: {"value":" trace"} + + + data: {"value":" back"} + + + data: {"value":" his"} + + + data: {"value":" steps"} + + + data: {"value":" to"} + + + data: {"value":" find"} + + + data: {"value":" out"} + + + data: {"value":" why"} + + + data: {"value":" it"} + + + data: {"value":" wasn"} + + + data: {"value":"''t"} + + + data: {"value":"!"} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_completions_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_completions_legacy.yaml new file mode 100644 index 0000000000..247b1c4acb --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_completions_legacy.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: + '{ + "model": "palmyra-x4", + "prompt": "Tell me a joke about OpenTelemetry", + "max_tokens": 150, + "temperature": 0.7, + "top_p": 0.9, + "stop": [ + "." + ], + "stream": false + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: + '{ + "choices": [ + { + "text": "A joke about OpenTelemetry!\n\nWhy did the OpenTelemetry collector go to therapy?\n\nBecause it was feeling instrumented, but could not seem to get a handle on its spans!", + "log_probs": null + } + ], + "model": "palmyra-x4" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 \ No newline at end of file diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_completions_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_completions_with_events_with_content.yaml new file mode 100644 index 0000000000..247b1c4acb --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_completions_with_events_with_content.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: + '{ + "model": "palmyra-x4", + "prompt": "Tell me a joke about OpenTelemetry", + "max_tokens": 150, + "temperature": 0.7, + "top_p": 0.9, + "stop": [ + "." + ], + "stream": false + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: + '{ + "choices": [ + { + "text": "A joke about OpenTelemetry!\n\nWhy did the OpenTelemetry collector go to therapy?\n\nBecause it was feeling instrumented, but could not seem to get a handle on its spans!", + "log_probs": null + } + ], + "model": "palmyra-x4" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 \ No newline at end of file diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_completions_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_completions_with_events_with_no_content.yaml new file mode 100644 index 0000000000..247b1c4acb --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_completions_with_events_with_no_content.yaml @@ -0,0 +1,42 @@ +interactions: +- request: + body: + '{ + "model": "palmyra-x4", + "prompt": "Tell me a joke about OpenTelemetry", + "max_tokens": 150, + "temperature": 0.7, + "top_p": 0.9, + "stop": [ + "." + ], + "stream": false + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: + '{ + "choices": [ + { + "text": "A joke about OpenTelemetry!\n\nWhy did the OpenTelemetry collector go to therapy?\n\nBecause it was feeling instrumented, but could not seem to get a handle on its spans!", + "log_probs": null + } + ], + "model": "palmyra-x4" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 \ No newline at end of file diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_streaming_completions_legacy.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_streaming_completions_legacy.yaml new file mode 100644 index 0000000000..ac6862a2bd --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_streaming_completions_legacy.yaml @@ -0,0 +1,205 @@ +interactions: +- request: + body: '{"model":"palmyra-x4","prompt":"Tell me a joke about OpenTelemetry","max_tokens":340,"stop":["I + am"],"stream":true,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '145' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: 'data: {"value":"Sure"} + + + data: {"value":","} + + + data: {"value":" here"} + + + data: {"value":"''s"} + + + data: {"value":" a"} + + + data: {"value":" light"} + + + data: {"value":"-hearted"} + + + data: {"value":" joke"} + + + data: {"value":" about"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":":\n\n"} + + + data: {"value":"Why"} + + + data: {"value":" did"} + + + data: {"value":" the"} + + + data: {"value":" developer"} + + + data: {"value":" decide"} + + + data: {"value":" to"} + + + data: {"value":" use"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":" for"} + + + data: {"value":" his"} + + + data: {"value":" project"} + + + data: {"value":"?\n\n"} + + + data: {"value":"Because"} + + + data: {"value":" he"} + + + data: {"value":" wanted"} + + + data: {"value":" to"} + + + data: {"value":" make"} + + + data: {"value":" sure"} + + + data: {"value":" his"} + + + data: {"value":" application"} + + + data: {"value":" was"} + + + data: {"value":" fully"} + + + data: {"value":" instrument"} + + + data: {"value":"ed"} + + + data: {"value":","} + + + data: {"value":" and"} + + + data: {"value":" he"} + + + data: {"value":" didn"} + + + data: {"value":"''t"} + + + data: {"value":" want"} + + + data: {"value":" to"} + + + data: {"value":" trace"} + + + data: {"value":" back"} + + + data: {"value":" his"} + + + data: {"value":" steps"} + + + data: {"value":" to"} + + + data: {"value":" find"} + + + data: {"value":" out"} + + + data: {"value":" why"} + + + data: {"value":" it"} + + + data: {"value":" wasn"} + + + data: {"value":"''t"} + + + data: {"value":"!"} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_streaming_completions_with_events_with_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_streaming_completions_with_events_with_content.yaml new file mode 100644 index 0000000000..ac6862a2bd --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_streaming_completions_with_events_with_content.yaml @@ -0,0 +1,205 @@ +interactions: +- request: + body: '{"model":"palmyra-x4","prompt":"Tell me a joke about OpenTelemetry","max_tokens":340,"stop":["I + am"],"stream":true,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '145' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: 'data: {"value":"Sure"} + + + data: {"value":","} + + + data: {"value":" here"} + + + data: {"value":"''s"} + + + data: {"value":" a"} + + + data: {"value":" light"} + + + data: {"value":"-hearted"} + + + data: {"value":" joke"} + + + data: {"value":" about"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":":\n\n"} + + + data: {"value":"Why"} + + + data: {"value":" did"} + + + data: {"value":" the"} + + + data: {"value":" developer"} + + + data: {"value":" decide"} + + + data: {"value":" to"} + + + data: {"value":" use"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":" for"} + + + data: {"value":" his"} + + + data: {"value":" project"} + + + data: {"value":"?\n\n"} + + + data: {"value":"Because"} + + + data: {"value":" he"} + + + data: {"value":" wanted"} + + + data: {"value":" to"} + + + data: {"value":" make"} + + + data: {"value":" sure"} + + + data: {"value":" his"} + + + data: {"value":" application"} + + + data: {"value":" was"} + + + data: {"value":" fully"} + + + data: {"value":" instrument"} + + + data: {"value":"ed"} + + + data: {"value":","} + + + data: {"value":" and"} + + + data: {"value":" he"} + + + data: {"value":" didn"} + + + data: {"value":"''t"} + + + data: {"value":" want"} + + + data: {"value":" to"} + + + data: {"value":" trace"} + + + data: {"value":" back"} + + + data: {"value":" his"} + + + data: {"value":" steps"} + + + data: {"value":" to"} + + + data: {"value":" find"} + + + data: {"value":" out"} + + + data: {"value":" why"} + + + data: {"value":" it"} + + + data: {"value":" wasn"} + + + data: {"value":"''t"} + + + data: {"value":"!"} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_streaming_completions_with_events_with_no_content.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_streaming_completions_with_events_with_no_content.yaml new file mode 100644 index 0000000000..ac6862a2bd --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_completions/test_writer_streaming_completions_with_events_with_no_content.yaml @@ -0,0 +1,205 @@ +interactions: +- request: + body: '{"model":"palmyra-x4","prompt":"Tell me a joke about OpenTelemetry","max_tokens":340,"stop":["I + am"],"stream":true,"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '145' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/completions + response: + body: + string: 'data: {"value":"Sure"} + + + data: {"value":","} + + + data: {"value":" here"} + + + data: {"value":"''s"} + + + data: {"value":" a"} + + + data: {"value":" light"} + + + data: {"value":"-hearted"} + + + data: {"value":" joke"} + + + data: {"value":" about"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":":\n\n"} + + + data: {"value":"Why"} + + + data: {"value":" did"} + + + data: {"value":" the"} + + + data: {"value":" developer"} + + + data: {"value":" decide"} + + + data: {"value":" to"} + + + data: {"value":" use"} + + + data: {"value":" Open"} + + + data: {"value":"Te"} + + + data: {"value":"lemetry"} + + + data: {"value":" for"} + + + data: {"value":" his"} + + + data: {"value":" project"} + + + data: {"value":"?\n\n"} + + + data: {"value":"Because"} + + + data: {"value":" he"} + + + data: {"value":" wanted"} + + + data: {"value":" to"} + + + data: {"value":" make"} + + + data: {"value":" sure"} + + + data: {"value":" his"} + + + data: {"value":" application"} + + + data: {"value":" was"} + + + data: {"value":" fully"} + + + data: {"value":" instrument"} + + + data: {"value":"ed"} + + + data: {"value":","} + + + data: {"value":" and"} + + + data: {"value":" he"} + + + data: {"value":" didn"} + + + data: {"value":"''t"} + + + data: {"value":" want"} + + + data: {"value":" to"} + + + data: {"value":" trace"} + + + data: {"value":" back"} + + + data: {"value":" his"} + + + data: {"value":" steps"} + + + data: {"value":" to"} + + + data: {"value":" find"} + + + data: {"value":" out"} + + + data: {"value":" why"} + + + data: {"value":" it"} + + + data: {"value":" wasn"} + + + data: {"value":"''t"} + + + data: {"value":"!"} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_async_metrics.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_async_metrics.yaml new file mode 100644 index 0000000000..b260192a1b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_async_metrics.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "57e4f58f-f7b1-41d8-be17-a6279c073aad", + "object": "chat.completion", + "model": "palmyra-x4", + "created": "1715361795", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "role": "assistant", + "content": "A joke about OpenTelemetry! Here it is:\n\nWhy did the OpenTelemetry span go to therapy?\n\nBecause it was struggling to instrument its issues!\n\n(Get it? \"Instrument\" has a double meaning here, referring both to the act of collecting metrics and traces in OpenTelemetry, as well as working through one''s problems... okay, maybe it''s just a techie joke)", + "refusal": null, + "tool_calls": [], + "graph_data": { + "sources": [], + "status": "finished", + "subqueries": [] + }, + "llm_data": null, + "translation_data": null, + "web_search_data": null + } + } + ], + "usage": { + "prompt_tokens": 40, + "total_tokens": 340, + "completion_tokens": 300, + "prompt_token_details": { + "cached_tokens": 0 + }, + "completion_token_details": { + "reasoning_tokens": 0 + } + }, + "system_fingerprint": "v1", + "service_tier": "standard" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_async_streaming_metrics.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_async_streaming_metrics.yaml new file mode 100644 index 0000000000..7388f3fe94 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_async_streaming_metrics.yaml @@ -0,0 +1,195 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '213' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[],"created":1755846931,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":76,"completion_tokens":37,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_metrics.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_metrics.yaml new file mode 100644 index 0000000000..b260192a1b --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_metrics.yaml @@ -0,0 +1,73 @@ +interactions: +- request: + body: '{ + "model": "palmyra-x4", + "messages": [ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry" + } + ], + "stream": false, + "max_tokens": 340, + "temperature": 0.7, + "top_p": 0.9, + "stop": "I am" + }' + headers: + accept: + - application/json + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com:443/v1/chat + response: + body: + string: '{ + "id": "57e4f58f-f7b1-41d8-be17-a6279c073aad", + "object": "chat.completion", + "model": "palmyra-x4", + "created": "1715361795", + "choices": [ + { + "index": 0, + "finish_reason": "stop", + "message": { + "role": "assistant", + "content": "A joke about OpenTelemetry! Here it is:\n\nWhy did the OpenTelemetry span go to therapy?\n\nBecause it was struggling to instrument its issues!\n\n(Get it? \"Instrument\" has a double meaning here, referring both to the act of collecting metrics and traces in OpenTelemetry, as well as working through one''s problems... okay, maybe it''s just a techie joke)", + "refusal": null, + "tool_calls": [], + "graph_data": { + "sources": [], + "status": "finished", + "subqueries": [] + }, + "llm_data": null, + "translation_data": null, + "web_search_data": null + } + } + ], + "usage": { + "prompt_tokens": 40, + "total_tokens": 340, + "completion_tokens": 300, + "prompt_token_details": { + "cached_tokens": 0 + }, + "completion_token_details": { + "reasoning_tokens": 0 + } + }, + "system_fingerprint": "v1", + "service_tier": "standard" + }' + headers: + Content-Type: + - application/json; charset=utf-8 + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_streaming_metrics.yaml b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_streaming_metrics.yaml new file mode 100644 index 0000000000..7388f3fe94 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/cassettes/test_metrics/test_writer_streaming_metrics.yaml @@ -0,0 +1,195 @@ +interactions: +- request: + body: '{"messages":[{"role":"user","content":"Tell me a joke about OpenTelemetry"}],"model":"palmyra-x4","max_tokens":340,"stop":"I + am","stream":true,"stream_options":{"include_usage":true},"temperature":0.7,"top_p":0.9}' + headers: + accept: + - application/json + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '213' + content-type: + - application/json + host: + - api.writer.com + method: POST + uri: https://api.writer.com/v1/chat + response: + body: + string: 'data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Sure","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":",","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + here","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''s","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + a","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + light","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"-hearted","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + joke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + about","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":":\n\n","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Why","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + did","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + the","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + developer","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + go","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + broke","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"?","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Because","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + he","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + used","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + Open","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"Te","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"lemetry","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + and","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + couldn","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"''t","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + keep","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + his","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + expenses","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + under","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":" + **","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"trace","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"**","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":null,"message":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":"!","role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[{"index":0,"finish_reason":"stop","message":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"delta":{"content":null,"role":"assistant","tool_calls":null,"graph_data":{"sources":null,"status":null,"subqueries":null},"llm_data":null,"image_data":null,"translation_data":null,"web_search_data":null,"refusal":null},"logprobs":null,"trace_details":null}],"created":1755846931,"model":"palmyra-x4","usage":null,"system_fingerprint":"v1","service_tier":null} + + + data: {"id":"1533878c-5636-44cf-a696-6a7b02304607","object":"chat.completion.chunk","choices":[],"created":1755846931,"model":"palmyra-x4","usage":{"prompt_tokens":39,"total_tokens":76,"completion_tokens":37,"prompt_token_details":null,"completion_tokens_details":null},"system_fingerprint":"v1","service_tier":null} + + + ' + headers: + Content-Type: + - text/event-stream + Transfer-Encoding: + - chunked + status: + code: 200 + message: OK +version: 1 diff --git a/packages/opentelemetry-instrumentation-writer/tests/conftest.py b/packages/opentelemetry-instrumentation-writer/tests/conftest.py new file mode 100644 index 0000000000..98c2250896 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/conftest.py @@ -0,0 +1,129 @@ +"""Unit tests configuration module.""" + +import os + +import pytest +from opentelemetry.sdk._events import EventLoggerProvider +from opentelemetry.sdk._logs import LoggerProvider +from opentelemetry.sdk._logs.export import (InMemoryLogExporter, + SimpleLogRecordProcessor) +from opentelemetry.sdk.metrics import Counter, Histogram, MeterProvider +from opentelemetry.sdk.metrics.export import (AggregationTemporality, + InMemoryMetricReader) +from opentelemetry.sdk.resources import Resource +from opentelemetry.sdk.trace import TracerProvider +from opentelemetry.sdk.trace.export import SimpleSpanProcessor +from opentelemetry.sdk.trace.export.in_memory_span_exporter import \ + InMemorySpanExporter +from writerai import AsyncWriter, Writer + +from opentelemetry.instrumentation.writer import WriterInstrumentor +from opentelemetry.instrumentation.writer.utils import TRACELOOP_TRACE_CONTENT + +if "WRITER_API_KEY" not in os.environ: + os.environ["WRITER_API_KEY"] = "test_api_key" + + +@pytest.fixture(scope="function", name="span_exporter") +def fixture_span_exporter(): + exporter = InMemorySpanExporter() + yield exporter + + +@pytest.fixture(scope="function", name="tracer_provider") +def fixture_tracer_provider(span_exporter): + provider = TracerProvider() + provider.add_span_processor(SimpleSpanProcessor(span_exporter)) + return provider + + +@pytest.fixture(scope="function", name="log_exporter") +def fixture_log_exporter(): + exporter = InMemoryLogExporter() + yield exporter + + +@pytest.fixture(scope="function", name="event_logger_provider") +def fixture_event_logger_provider(log_exporter): + provider = LoggerProvider() + provider.add_log_record_processor(SimpleLogRecordProcessor(log_exporter)) + event_logger_provider = EventLoggerProvider(provider) + + return event_logger_provider + + +@pytest.fixture(scope="function", name="reader") +def fixture_reader(): + reader = InMemoryMetricReader( + {Counter: AggregationTemporality.DELTA, Histogram: AggregationTemporality.DELTA} + ) + return reader + + +@pytest.fixture(scope="function", name="meter_provider") +def fixture_meter_provider(reader): + resource = Resource.create() + meter_provider = MeterProvider(metric_readers=[reader], resource=resource) + + return meter_provider + + +@pytest.fixture +def writer_client(): + return Writer() + + +@pytest.fixture +def writer_client_async(): + return AsyncWriter() + + +@pytest.fixture(scope="function") +def instrument_legacy(reader, tracer_provider, meter_provider): + instrumentor = WriterInstrumentor() + instrumentor.instrument( + tracer_provider=tracer_provider, + meter_provider=meter_provider, + ) + + yield instrumentor + + instrumentor.uninstrument() + + +@pytest.fixture(scope="function") +def instrument_with_content( + reader, tracer_provider, event_logger_provider, meter_provider +): + os.environ.update({TRACELOOP_TRACE_CONTENT: "True"}) + + instrumentor = WriterInstrumentor(use_legacy_attributes=False) + instrumentor.instrument( + tracer_provider=tracer_provider, + event_logger_provider=event_logger_provider, + meter_provider=meter_provider, + ) + + yield instrumentor + + os.environ.pop(TRACELOOP_TRACE_CONTENT, None) + instrumentor.uninstrument() + + +@pytest.fixture(scope="function") +def instrument_with_no_content( + reader, tracer_provider, event_logger_provider, meter_provider +): + os.environ.update({TRACELOOP_TRACE_CONTENT: "False"}) + + instrumentor = WriterInstrumentor(use_legacy_attributes=False) + instrumentor.instrument( + tracer_provider=tracer_provider, + event_logger_provider=event_logger_provider, + meter_provider=meter_provider, + ) + + yield instrumentor + + os.environ.pop(TRACELOOP_TRACE_CONTENT, None) + instrumentor.uninstrument() diff --git a/packages/opentelemetry-instrumentation-writer/tests/test_chat.py b/packages/opentelemetry-instrumentation-writer/tests/test_chat.py new file mode 100644 index 0000000000..e6c22ea416 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/test_chat.py @@ -0,0 +1,5527 @@ +import pytest +from opentelemetry.sdk._logs import LogData +from opentelemetry.semconv._incubating.attributes import \ + event_attributes as EventAttributes +from opentelemetry.semconv._incubating.attributes import \ + gen_ai_attributes as GenAIAttributes +from opentelemetry.semconv_ai import SpanAttributes +from writerai.types import ChatCompletion + +from opentelemetry.instrumentation.writer import _update_accumulated_response + + +def assert_message_in_logs(log: LogData, event_name: str, expected_content: dict): + assert log.log_record.attributes.get(EventAttributes.EVENT_NAME) == event_name + assert log.log_record.attributes.get(GenAIAttributes.GEN_AI_SYSTEM) == "writer" + + if not expected_content: + assert not log.log_record.body + else: + assert log.log_record.body + assert dict(log.log_record.body) == expected_content + + +@pytest.mark.vcr +def test_writer_chat_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response.choices[0].message.content + ) + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 40 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_chat_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response.choices[0].message.content, "tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_chat_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_chat_tool_calls_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like today?" + ) + assert ( + f"{SpanAttributes.LLM_REQUEST_FUNCTIONS}.1.content" + not in writer_span.attributes + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.1.tool_calls.0.name"] + == "get_current_weather" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.1.tool_calls.0.arguments"] + == '{"location": "San Francisco"}' + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.2.content"] + == "The weather in San Francisco is 70 degrees and sunny." + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response.choices[0].message.content + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_chat_tool_calls_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 4 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "What is the weather like today?"}, + ) + + assistant_message = { + "content": "", + "tool_calls": [ + { + "function": { + "arguments": '{"location": "San Francisco"}', + "name": "get_current_weather", + }, + "type": "function", + } + ], + } + assert_message_in_logs(logs[1], "gen_ai.assistant.message", assistant_message) + + assert_message_in_logs( + logs[2], + "gen_ai.tool.message", + {"content": "The weather in San Francisco is 70 degrees and sunny."}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response.choices[0].message.content, "tool_calls": []}, + } + assert_message_in_logs(logs[3], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_chat_tool_calls_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 4 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + assert_message_in_logs( + logs[1], + "gen_ai.assistant.message", + { + "tool_calls": [ + { + "function": {"name": "get_current_weather"}, + "type": "function", + } + ], + }, + ) + + assert_message_in_logs(logs[2], "gen_ai.tool.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[3], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response = "" + for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response + ) + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_streaming_chat_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response = "" + for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response, "tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response = "" + for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_tool_calls_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = "" + for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like today?" + ) + assert ( + f"{SpanAttributes.LLM_REQUEST_FUNCTIONS}.1.content" + not in writer_span.attributes + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.1.tool_calls.0.name"] + == "get_current_weather" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.1.tool_calls.0.arguments"] + == '{"location": "San Francisco"}' + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.2.content"] + == "The weather in San Francisco is 70 degrees and sunny." + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_streaming_chat_tool_calls_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = "" + for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 4 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "What is the weather like today?"}, + ) + + assistant_message = { + "content": "", + "tool_calls": [ + { + "function": { + "arguments": '{"location": "San Francisco"}', + "name": "get_current_weather", + }, + "type": "function", + } + ], + } + assert_message_in_logs(logs[1], "gen_ai.assistant.message", assistant_message) + + assert_message_in_logs( + logs[2], + "gen_ai.tool.message", + {"content": "The weather in San Francisco is 70 degrees and sunny."}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response, "tool_calls": []}, + } + assert_message_in_logs(logs[3], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_tool_calls_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = "" + for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 4 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + assert_message_in_logs( + logs[1], + "gen_ai.assistant.message", + { + "tool_calls": [ + { + "function": {"name": "get_current_weather"}, + "type": "function", + } + ], + }, + ) + + assert_message_in_logs(logs[2], "gen_ai.tool.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[3], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_chat_tool_call_request_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like in Zakopane today?" + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.finish_reason"] + == response.choices[0].finish_reason + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.id"] + == response.choices[0].message.tool_calls[0].id + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.name"] + == response.choices[0].message.tool_calls[0].function.name + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.arguments" + ] + == response.choices[0].message.tool_calls[0].function.arguments + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.role") + == response.choices[0].message.role + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_chat_tool_call_request_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "What is the weather like in Zakopane today?"}, + ) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "content": response.choices[0].message.content, + "tool_calls": [ + { + "id": response.choices[0].message.tool_calls[0].id, + "function": { + "arguments": response.choices[0] + .message.tool_calls[0] + .function.arguments, + "name": response.choices[0].message.tool_calls[0].function.name, + }, + "type": response.choices[0].message.tool_calls[0].type, + "index": None, + } + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_chat_tool_call_request_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "tool_calls": [ + { + "id": response.choices[0].message.tool_calls[0].id, + "function": { + "name": response.choices[0].message.tool_calls[0].function.name, + }, + "type": response.choices[0].message.tool_calls[0].type, + "index": None, + } + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_tool_call_request_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + for _ in gen: + ... + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like in Zakopane today?" + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.finish_reason"] + == "tool_calls" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.id"] + == "chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.name"] + == "get_weather" + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.arguments" + ] + == '{"location": "Zakopane"}' + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.role") + == "assistant" + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_streaming_chat_tool_call_request_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + for _ in gen: + ... + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "What is the weather like in Zakopane today?"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "tool_calls", + "message": { + "content": "", + "tool_calls": [ + { + "id": "chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2", + "function": { + "arguments": '{"location": "Zakopane"}', + "name": "get_weather", + }, + "type": "function", + "index": 0, + } + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_tool_call_request_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + for _ in gen: + ... + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "tool_calls", + "message": { + "tool_calls": [ + { + "id": "chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2", + "function": { + "name": "get_weather", + }, + "type": "function", + "index": 0, + } + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_chat_multiple_choices_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + stream=False, + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + n=2, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response.choices[0].message.content + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.1.content") + == response.choices[1].message.content + ) + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_chat_multiple_choices_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + stream=False, + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + n=2, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 3 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response.choices[0].message.content, "tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + choice_event = { + "index": 1, + "finish_reason": "stop", + "message": {"content": response.choices[1].message.content, "tool_calls": []}, + } + assert_message_in_logs(logs[2], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_chat_multiple_choices_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + stream=False, + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + n=2, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 3 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + choice_event = { + "index": 1, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[2], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_multiple_choices_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response_0 = "" + response_1 = "" + for res in gen: + if res.choices and res.choices[0].message.content and res.choices[0].index == 0: + response_0 += res.choices[0].message.content + if res.choices and res.choices[0].message.content and res.choices[0].index == 1: + response_1 += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response_0 + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.1.content") + == response_1 + ) + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_streaming_chat_multiple_choices_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response_0 = "" + response_1 = "" + for res in gen: + if res.choices and res.choices[0].message.content and res.choices[0].index == 0: + response_0 += res.choices[0].message.content + if res.choices and res.choices[0].message.content and res.choices[0].index == 1: + response_1 += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 3 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_0_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response_0, "tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_0_event) + + choice_1_event = { + "index": 1, + "finish_reason": "stop", + "message": {"content": response_1, "tool_calls": []}, + } + assert_message_in_logs(logs[2], "gen_ai.choice", choice_1_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_multiple_choices_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response_0 = "" + response_1 = "" + for res in gen: + if res.choices and res.choices[0].message.content and res.choices[0].index == 0: + response_0 += res.choices[0].message.content + if res.choices and res.choices[0].message.content and res.choices[0].index == 1: + response_1 += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 3 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_0_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_0_event) + + choice_1_event = { + "index": 1, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[2], "gen_ai.choice", choice_1_event) + + +@pytest.mark.vcr +def test_writer_chat_multiple_tool_call_requests_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like in Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.finish_reason"] + == response.choices[0].finish_reason + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.role") + == response.choices[0].message.role + ) + + for index in range(7): + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.id" + ] + == response.choices[0].message.tool_calls[index].id + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.name" + ] + == response.choices[0].message.tool_calls[index].function.name + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.arguments" + ] + == response.choices[0].message.tool_calls[index].function.arguments + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_chat_multiple_tool_call_requests_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + { + "content": "What is the weather like in Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?" + }, + ) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "content": response.choices[0].message.content, + "tool_calls": [ + { + "id": tool_call.id, + "function": { + "arguments": tool_call.function.arguments, + "name": tool_call.function.name, + }, + "type": tool_call.type, + "index": tool_call.index, + } + for tool_call in response.choices[0].message.tool_calls + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_chat_multiple_tool_call_requests_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + response = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "tool_calls": [ + { + "id": tool_call.id, + "function": { + "name": tool_call.function.name, + }, + "type": tool_call.type, + "index": tool_call.index, + } + for tool_call in response.choices[0].message.tool_calls + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_multiple_tool_call_requests_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = ChatCompletion( + id="", + choices=[], + created=0, + model="", + object="chat.completion", + ) + + for chunk in gen: + _update_accumulated_response(response, chunk) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like in Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.finish_reason"] + == response.choices[0].finish_reason + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.role") + == response.choices[0].message.role + ) + + for index in range(7): + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.id" + ] + == response.choices[0].message.tool_calls[index].id + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.name" + ] + == response.choices[0].message.tool_calls[index].function.name + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.arguments" + ] + == response.choices[0].message.tool_calls[index].function.arguments + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_streaming_chat_multiple_tool_call_requests_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = ChatCompletion( + id="", + choices=[], + created=0, + model="", + object="chat.completion", + ) + + for chunk in gen: + _update_accumulated_response(response, chunk) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + { + "content": "What is the weather like in Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?" + }, + ) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "content": response.choices[0].message.content, + "tool_calls": [ + { + "id": tool_call.id, + "function": { + "arguments": tool_call.function.arguments, + "name": tool_call.function.name, + }, + "type": tool_call.type, + "index": tool_call.index, + } + for tool_call in response.choices[0].message.tool_calls + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_chat_multiple_tool_call_requests_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = ChatCompletion( + id="", + choices=[], + created=0, + model="", + object="chat.completion", + ) + + for chunk in gen: + _update_accumulated_response(response, chunk) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "tool_calls": [ + { + "id": tool_call.id, + "function": { + "name": tool_call.function.name, + }, + "type": tool_call.type, + "index": tool_call.index, + } + for tool_call in response.choices[0].message.tool_calls + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response.choices[0].message.content + ) + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 40 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 40 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response.choices[0].message.content, "tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_tool_calls_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like today?" + ) + assert ( + f"{SpanAttributes.LLM_REQUEST_FUNCTIONS}.1.content" + not in writer_span.attributes + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.1.tool_calls.0.name"] + == "get_current_weather" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.1.tool_calls.0.arguments"] + == '{"location": "San Francisco"}' + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.2.content"] + == "The weather in San Francisco is 70 degrees and sunny." + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response.choices[0].message.content + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_tool_calls_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 4 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "What is the weather like today?"}, + ) + + assistant_message = { + "content": "", + "tool_calls": [ + { + "function": { + "arguments": '{"location": "San Francisco"}', + "name": "get_current_weather", + }, + "type": "function", + } + ], + } + assert_message_in_logs(logs[1], "gen_ai.assistant.message", assistant_message) + + assert_message_in_logs( + logs[2], + "gen_ai.tool.message", + {"content": "The weather in San Francisco is 70 degrees and sunny."}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response.choices[0].message.content, "tool_calls": []}, + } + assert_message_in_logs(logs[3], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_tool_calls_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 4 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + assert_message_in_logs( + logs[1], + "gen_ai.assistant.message", + { + "tool_calls": [ + { + "function": {"name": "get_current_weather"}, + "type": "function", + } + ], + }, + ) + + assert_message_in_logs(logs[2], "gen_ai.tool.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[3], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response = "" + async for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response + ) + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response = "" + async for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response, "tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response = "" + async for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_tool_calls_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = "" + async for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like today?" + ) + assert ( + f"{SpanAttributes.LLM_REQUEST_FUNCTIONS}.1.content" + not in writer_span.attributes + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.1.tool_calls.0.name"] + == "get_current_weather" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.1.tool_calls.0.arguments"] + == '{"location": "San Francisco"}' + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_PROMPTS}.2.content"] + == "The weather in San Francisco is 70 degrees and sunny." + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_tool_calls_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = "" + async for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 4 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "What is the weather like today?"}, + ) + + assistant_message = { + "content": "", + "tool_calls": [ + { + "function": { + "arguments": '{"location": "San Francisco"}', + "name": "get_current_weather", + }, + "type": "function", + } + ], + } + assert_message_in_logs(logs[1], "gen_ai.assistant.message", assistant_message) + + assert_message_in_logs( + logs[2], + "gen_ai.tool.message", + {"content": "The weather in San Francisco is 70 degrees and sunny."}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response, "tool_calls": []}, + } + assert_message_in_logs(logs[3], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_tool_calls_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like today?"}, + { + "role": "assistant", + "content": "", + "tool_calls": [ + { + "type": "function", + "function": { + "name": "get_current_weather", + "arguments": '{"location": "San Francisco"}', + }, + } + ], + }, + { + "role": "tool", + "content": "The weather in San Francisco is 70 degrees and sunny.", + }, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = "" + async for res in gen: + if res.choices and res.choices[0].message.content: + response += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 4 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + assert_message_in_logs( + logs[1], + "gen_ai.assistant.message", + { + "tool_calls": [ + { + "function": {"name": "get_current_weather"}, + "type": "function", + } + ], + }, + ) + + assert_message_in_logs(logs[2], "gen_ai.tool.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[3], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_tool_call_request_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like in Zakopane today?" + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.finish_reason"] + == response.choices[0].finish_reason + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.id"] + == response.choices[0].message.tool_calls[0].id + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.name"] + == response.choices[0].message.tool_calls[0].function.name + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.arguments" + ] + == response.choices[0].message.tool_calls[0].function.arguments + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.role") + == response.choices[0].message.role + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_tool_call_request_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "What is the weather like in Zakopane today?"}, + ) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "content": response.choices[0].message.content, + "tool_calls": [ + { + "id": response.choices[0].message.tool_calls[0].id, + "function": { + "arguments": response.choices[0] + .message.tool_calls[0] + .function.arguments, + "name": response.choices[0].message.tool_calls[0].function.name, + }, + "type": response.choices[0].message.tool_calls[0].type, + "index": None, + } + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_tool_call_request_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "tool_calls": [ + { + "id": response.choices[0].message.tool_calls[0].id, + "function": { + "name": response.choices[0].message.tool_calls[0].function.name, + }, + "type": response.choices[0].message.tool_calls[0].type, + "index": None, + } + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_tool_call_request_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + async for _ in gen: + ... + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like in Zakopane today?" + ) + + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.finish_reason"] + == "tool_calls" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.id"] + == "chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.name"] + == "get_weather" + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.0.arguments" + ] + == '{"location": "Zakopane"}' + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.role") + == "assistant" + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_tool_call_request_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + async for _ in gen: + ... + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "What is the weather like in Zakopane today?"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "tool_calls", + "message": { + "content": "", + "tool_calls": [ + { + "id": "chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2", + "function": { + "arguments": '{"location": "Zakopane"}', + "name": "get_weather", + }, + "type": "function", + "index": 0, + } + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_tool_call_request_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + {"role": "user", "content": "What is the weather like in Zakopane today?"}, + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + async for _ in gen: + ... + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "tool_calls", + "message": { + "tool_calls": [ + { + "id": "chatcmpl-tool-a31f1a5690b14b7daf0e78d2a2d23da2", + "function": { + "name": "get_weather", + }, + "type": "function", + "index": 0, + } + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_multiple_choices_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + stream=False, + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + n=2, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response.choices[0].message.content + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.1.content") + == response.choices[1].message.content + ) + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_multiple_choices_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + stream=False, + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + n=2, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 3 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response.choices[0].message.content, "tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + choice_event = { + "index": 1, + "finish_reason": "stop", + "message": {"content": response.choices[1].message.content, "tool_calls": []}, + } + assert_message_in_logs(logs[2], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_multiple_choices_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + stream=False, + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + n=2, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 3 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + choice_event = { + "index": 1, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[2], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_multiple_choices_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response_0 = "" + response_1 = "" + async for res in gen: + if res.choices and res.choices[0].message.content and res.choices[0].index == 0: + response_0 += res.choices[0].message.content + if res.choices and res.choices[0].message.content and res.choices[0].index == 1: + response_1 += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response_0 + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.1.content") + == response_1 + ) + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_multiple_choices_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response_0 = "" + response_1 = "" + async for res in gen: + if res.choices and res.choices[0].message.content and res.choices[0].index == 0: + response_0 += res.choices[0].message.content + if res.choices and res.choices[0].message.content and res.choices[0].index == 1: + response_1 += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get(SpanAttributes.LLM_USAGE_PROMPT_TOKENS) == 39 + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 3 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_0_event = { + "index": 0, + "finish_reason": "stop", + "message": {"content": response_0, "tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_0_event) + + choice_1_event = { + "index": 1, + "finish_reason": "stop", + "message": {"content": response_1, "tool_calls": []}, + } + assert_message_in_logs(logs[2], "gen_ai.choice", choice_1_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_multiple_choices_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + response_0 = "" + response_1 = "" + async for res in gen: + if res.choices and res.choices[0].message.content and res.choices[0].index == 0: + response_0 += res.choices[0].message.content + if res.choices and res.choices[0].message.content and res.choices[0].index == 1: + response_1 += res.choices[0].message.content + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 3 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_0_event = { + "index": 0, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_0_event) + + choice_1_event = { + "index": 1, + "finish_reason": "stop", + "message": {"tool_calls": []}, + } + assert_message_in_logs(logs[2], "gen_ai.choice", choice_1_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_multiple_tool_call_requests_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + } + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like in Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.finish_reason"] + == response.choices[0].finish_reason + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.role") + == response.choices[0].message.role + ) + + for index in range(7): + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.id" + ] + == response.choices[0].message.tool_calls[index].id + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.name" + ] + == response.choices[0].message.tool_calls[index].function.name + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.arguments" + ] + == response.choices[0].message.tool_calls[index].function.arguments + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_multiple_tool_call_requests_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + } + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + { + "content": "What is the weather like in Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?" + }, + ) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "content": response.choices[0].message.content, + "tool_calls": [ + { + "id": tool_call.id, + "function": { + "arguments": tool_call.function.arguments, + "name": tool_call.function.name, + }, + "type": tool_call.type, + "index": tool_call.index, + } + for tool_call in response.choices[0].message.tool_calls + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_chat_multiple_tool_call_requests_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + } + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=False, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "tool_calls": [ + { + "id": tool_call.id, + "function": { + "name": tool_call.function.name, + }, + "type": tool_call.type, + "index": tool_call.index, + } + for tool_call in response.choices[0].message.tool_calls + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_multiple_tool_call_requests_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + } + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = ChatCompletion( + id="", + choices=[], + created=0, + model="", + object="chat.completion", + ) + + async for chunk in gen: + _update_accumulated_response(response, chunk) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "What is the weather like in Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?" + ) + assert ( + writer_span.attributes[f"{SpanAttributes.LLM_COMPLETIONS}.0.finish_reason"] + == response.choices[0].finish_reason + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.role") + == response.choices[0].message.role + ) + + for index in range(7): + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.id" + ] + == response.choices[0].message.tool_calls[index].id + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.name" + ] + == response.choices[0].message.tool_calls[index].function.name + ) + assert ( + writer_span.attributes[ + f"{SpanAttributes.LLM_COMPLETIONS}.0.tool_calls.{index}.arguments" + ] + == response.choices[0].message.tool_calls[index].function.arguments + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_multiple_tool_call_requests_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + } + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = ChatCompletion( + id="", + choices=[], + created=0, + model="", + object="chat.completion", + ) + + async for chunk in gen: + _update_accumulated_response(response, chunk) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs( + logs[0], + "gen_ai.user.message", + { + "content": "What is the weather like in Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?" + }, + ) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "content": response.choices[0].message.content, + "tool_calls": [ + { + "id": tool_call.id, + "function": { + "arguments": tool_call.function.arguments, + "name": tool_call.function.name, + }, + "type": tool_call.type, + "index": tool_call.index, + } + for tool_call in response.choices[0].message.tool_calls + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_chat_multiple_tool_call_requests_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "What is the weather like in " + "Zakopane, Warsaw, Lodz, Katowice, Krakow, Poznan and Lublin today?", + } + ], + tools=[ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ], + stream=True, + max_tokens=340, + temperature=0.7, + top_p=0.9, + stop="I am", + stream_options={"include_usage": True}, + ) + + response = ChatCompletion( + id="", + choices=[], + created=0, + model="", + object="chat.completion", + ) + + async for chunk in gen: + _update_accumulated_response(response, chunk) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "chat" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") + == "I am" + ) + + assert writer_span.attributes.get( + SpanAttributes.LLM_USAGE_TOTAL_TOKENS + ) == writer_span.attributes.get( + SpanAttributes.LLM_USAGE_COMPLETION_TOKENS + ) + writer_span.attributes.get( + SpanAttributes.LLM_USAGE_PROMPT_TOKENS + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + assert_message_in_logs(logs[0], "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": response.choices[0].finish_reason, + "message": { + "tool_calls": [ + { + "id": tool_call.id, + "function": { + "name": tool_call.function.name, + }, + "type": tool_call.type, + "index": tool_call.index, + } + for tool_call in response.choices[0].message.tool_calls + ], + }, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) diff --git a/packages/opentelemetry-instrumentation-writer/tests/test_completions.py b/packages/opentelemetry-instrumentation-writer/tests/test_completions.py new file mode 100644 index 0000000000..20bfe443e2 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/test_completions.py @@ -0,0 +1,665 @@ +import pytest +from opentelemetry.sdk._logs import LogData +from opentelemetry.semconv._incubating.attributes import \ + event_attributes as EventAttributes +from opentelemetry.semconv._incubating.attributes import \ + gen_ai_attributes as GenAIAttributes +from opentelemetry.semconv_ai import SpanAttributes + + +@pytest.mark.vcr +def test_writer_completions_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + response = writer_client.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + max_tokens=150, + temperature=0.7, + top_p=0.9, + stop=["."], + stream=False, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 150 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + ".", + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response.choices[0].text + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_completions_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + response = writer_client.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + max_tokens=150, + temperature=0.7, + top_p=0.9, + stop=["."], + stream=False, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 150 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + ".", + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + user_message_log = logs[0] + assert_message_in_logs( + user_message_log, + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "unknown", + "message": {"content": response.choices[0].text}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_completions_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + writer_client.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + max_tokens=150, + temperature=0.7, + top_p=0.9, + stop=["."], + stream=False, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 150 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + ".", + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + user_message_log = logs[0] + assert_message_in_logs(user_message_log, "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "unknown", + "message": {}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_completions_legacy( + instrument_legacy, writer_client, span_exporter, log_exporter +): + gen = writer_client.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop=["I am"], + stream=True, + ) + + response = "" + for res in gen: + if res.value: + response += res.value + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + "I am", + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +def test_writer_streaming_completions_with_events_with_content( + instrument_with_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop=["I am"], + stream=True, + ) + + response = "" + for res in gen: + if res.value: + response += res.value + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + "I am", + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + user_message_log = logs[0] + assert_message_in_logs( + user_message_log, + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "unknown", + "message": {"content": response}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +def test_writer_streaming_completions_with_events_with_no_content( + instrument_with_no_content, writer_client, span_exporter, log_exporter +): + gen = writer_client.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop=["I am"], + stream=True, + ) + + response = "" + for res in gen: + if res.value: + response += res.value + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + "I am", + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + user_message_log = logs[0] + assert_message_in_logs(user_message_log, "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "unknown", + "message": {}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_completions_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + max_tokens=150, + temperature=0.7, + top_p=0.9, + stop=["."], + stream=False, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + + assert writer_span.name == "writerai.completions" + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 150 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + ".", + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response.choices[0].text + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_completions_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + response = await writer_client_async.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + max_tokens=150, + temperature=0.7, + top_p=0.9, + stop=["."], + stream=False, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 150 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + ".", + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + user_message_log = logs[0] + assert_message_in_logs( + user_message_log, + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "unknown", + "message": {"content": response.choices[0].text}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_completions_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + await writer_client_async.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + max_tokens=150, + temperature=0.7, + top_p=0.9, + stop=["."], + stream=False, + ) + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert not writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 150 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + ".", + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + user_message_log = logs[0] + assert_message_in_logs(user_message_log, "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "unknown", + "message": {}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +def assert_message_in_logs(log: LogData, event_name: str, expected_content: dict): + assert log.log_record.attributes.get(EventAttributes.EVENT_NAME) == event_name + assert log.log_record.attributes.get(GenAIAttributes.GEN_AI_SYSTEM) == "writer" + + if not expected_content: + assert not log.log_record.body + else: + assert log.log_record.body + assert dict(log.log_record.body) == expected_content + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_completions_legacy( + instrument_legacy, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop=["I am"], + stream=True, + ) + + response = "" + async for res in gen: + if res.value: + response += res.value + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + "I am", + ) + + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_PROMPTS}.0.content") + == "Tell me a joke about OpenTelemetry" + ) + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_COMPLETIONS}.0.content") + == response + ) + + logs = log_exporter.get_finished_logs() + assert ( + len(logs) == 0 + ), "Assert that it doesn't emit logs when use_legacy_attributes is True" + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_completions_with_events_with_content( + instrument_with_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop=["I am"], + stream=True, + ) + + response = "" + async for res in gen: + if res.value: + response += res.value + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + "I am", + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + user_message_log = logs[0] + assert_message_in_logs( + user_message_log, + "gen_ai.user.message", + {"content": "Tell me a joke about OpenTelemetry"}, + ) + + choice_event = { + "index": 0, + "finish_reason": "unknown", + "message": {"content": response}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_completions_with_events_with_no_content( + instrument_with_no_content, writer_client_async, span_exporter, log_exporter +): + gen = await writer_client_async.completions.create( + model="palmyra-x4", + prompt="Tell me a joke about OpenTelemetry", + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop=["I am"], + stream=True, + ) + + response = "" + async for res in gen: + if res.value: + response += res.value + + spans = span_exporter.get_finished_spans() + writer_span = spans[0] + assert writer_span.name == "writerai.completions" + assert writer_span.attributes.get(f"{SpanAttributes.LLM_SYSTEM}") == "writer" + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TYPE}") == "completion" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_IS_STREAMING}") + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MODEL}") + == "palmyra-x4" + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_MAX_TOKENS}") == 340 + assert ( + writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TEMPERATURE}") == 0.7 + ) + assert writer_span.attributes.get(f"{SpanAttributes.LLM_REQUEST_TOP_P}") == 0.9 + assert writer_span.attributes.get(f"{SpanAttributes.LLM_CHAT_STOP_SEQUENCES}") == ( + "I am", + ) + + logs = log_exporter.get_finished_logs() + assert len(logs) == 2 + + user_message_log = logs[0] + assert_message_in_logs(user_message_log, "gen_ai.user.message", {}) + + choice_event = { + "index": 0, + "finish_reason": "unknown", + "message": {}, + } + assert_message_in_logs(logs[1], "gen_ai.choice", choice_event) diff --git a/packages/opentelemetry-instrumentation-writer/tests/test_metrics.py b/packages/opentelemetry-instrumentation-writer/tests/test_metrics.py new file mode 100644 index 0000000000..32f0f26f29 --- /dev/null +++ b/packages/opentelemetry-instrumentation-writer/tests/test_metrics.py @@ -0,0 +1,316 @@ +import pytest +from opentelemetry.semconv._incubating.metrics import \ + gen_ai_metrics as GenAIMetrics +from opentelemetry.semconv_ai import Meters, SpanAttributes + + +@pytest.mark.vcr +def test_writer_metrics(instrument_legacy, reader, writer_client): + writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=False, + ) + + metrics_data = reader.get_metrics_data() + resource_metrics = metrics_data.resource_metrics + assert len(resource_metrics) > 0 + + found_token_metric = False + found_duration_metric = False + + for rm in resource_metrics: + for sm in rm.scope_metrics: + for metric in sm.metrics: + if metric.name == Meters.LLM_TOKEN_USAGE: + found_token_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes[SpanAttributes.LLM_TOKEN_TYPE] in [ + "output", + "input", + ] + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.sum > 0 + + if metric.name == Meters.LLM_OPERATION_DURATION: + found_duration_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.sum > 0 + + assert found_token_metric + assert found_duration_metric + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_metrics(instrument_legacy, reader, writer_client_async): + await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=False, + ) + + metrics_data = reader.get_metrics_data() + resource_metrics = metrics_data.resource_metrics + assert len(resource_metrics) > 0 + + found_token_metric = False + found_duration_metric = False + + for rm in resource_metrics: + for sm in rm.scope_metrics: + for metric in sm.metrics: + if metric.name == Meters.LLM_TOKEN_USAGE: + found_token_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes[SpanAttributes.LLM_TOKEN_TYPE] in [ + "output", + "input", + ] + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.sum > 0 + + if metric.name == Meters.LLM_OPERATION_DURATION: + found_duration_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.sum > 0 + + assert found_token_metric + assert found_duration_metric + + +@pytest.mark.vcr +def test_writer_streaming_metrics(instrument_legacy, reader, writer_client): + gen = writer_client.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + for _ in gen: + ... + + metrics_data = reader.get_metrics_data() + resource_metrics = metrics_data.resource_metrics + assert len(resource_metrics) > 0 + + found_token_metric = False + found_duration_metric = False + found_streaming_time_to_generate_metric = False + found_streaming_time_to_first_token_metric = False + + total_time = 0 + time_to_first_token = 0 + time_to_generate = 0 + + for rm in resource_metrics: + for sm in rm.scope_metrics: + for metric in sm.metrics: + if metric.name == Meters.LLM_TOKEN_USAGE: + found_token_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes[SpanAttributes.LLM_TOKEN_TYPE] in [ + "output", + "input", + ] + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.sum > 0 + + if metric.name == Meters.LLM_STREAMING_TIME_TO_GENERATE: + found_streaming_time_to_generate_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.attributes["stream"] + assert data_point.sum > 0 + time_to_generate += data_point.sum + + if metric.name == GenAIMetrics.GEN_AI_SERVER_TIME_TO_FIRST_TOKEN: + found_streaming_time_to_first_token_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.attributes["stream"] + assert data_point.sum > 0 + time_to_first_token += data_point.sum + + if metric.name == Meters.LLM_OPERATION_DURATION: + found_duration_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.sum > 0 + total_time += data_point.sum + + assert found_token_metric + assert found_duration_metric + assert found_streaming_time_to_generate_metric + assert found_streaming_time_to_first_token_metric + assert total_time == time_to_first_token + time_to_generate + + +@pytest.mark.vcr +@pytest.mark.asyncio +async def test_writer_async_streaming_metrics( + instrument_legacy, reader, writer_client_async +): + gen = await writer_client_async.chat.chat( + model="palmyra-x4", + messages=[ + { + "role": "user", + "content": "Tell me a joke about OpenTelemetry", + }, + ], + temperature=0.7, + top_p=0.9, + max_tokens=340, + stop="I am", + stream=True, + stream_options={"include_usage": True}, + ) + + async for _ in gen: + ... + + metrics_data = reader.get_metrics_data() + resource_metrics = metrics_data.resource_metrics + assert len(resource_metrics) > 0 + + found_token_metric = False + found_duration_metric = False + found_streaming_time_to_generate_metric = False + found_streaming_time_to_first_token_metric = False + + total_time = 0 + time_to_first_token = 0 + time_to_generate = 0 + + for rm in resource_metrics: + for sm in rm.scope_metrics: + for metric in sm.metrics: + if metric.name == Meters.LLM_TOKEN_USAGE: + found_token_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes[SpanAttributes.LLM_TOKEN_TYPE] in [ + "output", + "input", + ] + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.sum > 0 + + if metric.name == Meters.LLM_STREAMING_TIME_TO_GENERATE: + found_streaming_time_to_generate_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.attributes["stream"] + assert data_point.sum > 0 + time_to_generate += data_point.sum + + if metric.name == GenAIMetrics.GEN_AI_SERVER_TIME_TO_FIRST_TOKEN: + found_streaming_time_to_first_token_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.attributes["stream"] + assert data_point.sum > 0 + time_to_first_token += data_point.sum + + if metric.name == Meters.LLM_OPERATION_DURATION: + found_duration_metric = True + for data_point in metric.data.data_points: + assert data_point.attributes["gen_ai.system"] == "writer" + assert ( + data_point.attributes["gen_ai.response.model"] + == "palmyra-x4" + ) + assert data_point.attributes["llm.request.type"] == "chat" + assert data_point.sum > 0 + total_time += data_point.sum + + assert found_token_metric + assert found_duration_metric + assert found_streaming_time_to_generate_metric + assert found_streaming_time_to_first_token_metric + assert total_time == time_to_first_token + time_to_generate diff --git a/packages/sample-app/sample_app/writer_example.py b/packages/sample-app/sample_app/writer_example.py new file mode 100644 index 0000000000..a753aab5ef --- /dev/null +++ b/packages/sample-app/sample_app/writer_example.py @@ -0,0 +1,165 @@ +import json +import os + +from writerai import Writer +from dotenv import load_dotenv +from traceloop.sdk import Traceloop +from traceloop.sdk.decorators import tool +from typing import Dict, List, Any, Optional +from dataclasses import dataclass + +"""---------------------------------------- Initializing environment ----------------------------------------""" + +if "TRACELOOP_METRICS_ENABLED" not in os.environ: + os.environ["TRACELOOP_METRICS_ENABLED"] = "true" + +load_dotenv() + +Traceloop.init() +writer_client = Writer() + +messages = [{"role": "system", "content": "Answer with jokes"}, + {"role": "user", "content": "What is the weather like today in Barcelona?"}] +tools = [ + { + "function": { + "description": "Return weather in the specific location.", + "name": "get_weather", + "parameters": { + "properties": { + "location": { + "description": "Location to return weather at", + "type": "string", + }, + }, + "required": ["location"], + "type": "object", + }, + }, + "type": "function", + } + ] + +"""---------------------------------------- Chat tool definition ----------------------------------------""" + + +@tool(name="get_weather") +def get_weather(location: str) -> str: + return f"Weather in {location}: sunny, 25 deg above 0, wind is 2 m/s south." + + +"""---------------------------------------- Subsidiary functions ----------------------------------------""" + + +@dataclass +class StreamResult: + content: str + tool_calls: List[Dict[str, Any]] + finish_reason: Optional[str] = None + + +def handle_streaming_response(response_stream): + accumulated_content = "" + tool_calls_accumulator = {} + finish_reason = None + + for chunk in response_stream: + if chunk.choices and len(chunk.choices) > 0 and chunk.choices[0].delta: + + delta = chunk.choices[0].delta + + if delta.content: + accumulated_content += delta.content + + if delta.tool_calls: + for tool_call_chunk in delta.tool_calls: + _process_tool_call_chunk(tool_call_chunk, tool_calls_accumulator) + + if chunk.choices[0].finish_reason: + finish_reason = chunk.choices[0].finish_reason + + print(StreamResult( + content=accumulated_content, + tool_calls=list(tool_calls_accumulator.values()), + finish_reason=finish_reason + )) + + return StreamResult( + content=accumulated_content, + tool_calls=list(tool_calls_accumulator.values()), + finish_reason=finish_reason + ) + + +def _process_tool_call_chunk( + tool_call_chunk, + accumulator +): + index = tool_call_chunk.index + + if index is None: + return + + if index not in accumulator: + accumulator[index] = { + 'id': '', + 'type': 'function', + 'function': { + 'name': '', + 'arguments': '' + } + } + + current_tool_call = accumulator[index] + + if tool_call_chunk.id: + current_tool_call["id"] += tool_call_chunk.id + + if tool_call_chunk.function and tool_call_chunk.function.name: + current_tool_call['function']['name'] += tool_call_chunk.function.name + + if tool_call_chunk.function and tool_call_chunk.function.arguments: + current_tool_call['function']['arguments'] += tool_call_chunk.function.arguments + + +"""---------------------------------------- Usage example ----------------------------------------""" + +gen = writer_client.chat.chat( + model="palmyra-x4", + messages=messages, + tools=tools, + stream=True, + temperature=0.7, + top_p=0.9, + stream_options={"include_usage": True} +) + +print(20 * "-" + "Processing stream" + 20 * "-") +response = handle_streaming_response(gen) +messages += [{"role": "assistant", "content": response.content, "tool_calls": response.tool_calls}] + +print(20 * "-" + "Received response" + 20 * "-") +print(response) + +print(20 * "-" + "Calling tool 'get_weather'" + 20 * "-") +tool_call_arguments = json.loads(response.tool_calls[0]["function"]["arguments"]) +tool_call_result = get_weather(tool_call_arguments["location"]) +print(f"Arguments: {tool_call_arguments}. Tool call result: {tool_call_result}") +messages += [{"role": "tool", "content": tool_call_result}] + +gen = writer_client.chat.chat( + model="palmyra-x4", + messages=messages, + tools=tools, + stream=True, + temperature=0.7, + top_p=0.9, + stream_options={"include_usage": True} +) + +print(20 * "-" + "Processing stream" + 20 * "-") +response = handle_streaming_response(gen) +messages += [{"role": "assistant", "content": response.content, "tool_calls": response.tool_calls}] + +print(20 * "-" + "Received response" + 20 * "-") +print(response) diff --git a/packages/traceloop-sdk/poetry.lock b/packages/traceloop-sdk/poetry.lock index 87fbbf56d2..c7954d4271 100644 --- a/packages/traceloop-sdk/poetry.lock +++ b/packages/traceloop-sdk/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -7,7 +7,6 @@ description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8"}, {file = "aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745"}, @@ -20,7 +19,6 @@ description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.9" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, @@ -120,7 +118,6 @@ description = "aiosignal: a list of registered asynchronous callbacks" optional = false python-versions = ">=3.9" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, @@ -136,7 +133,6 @@ description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -149,7 +145,6 @@ description = "The official Python library for the anthropic API" optional = false python-versions = ">=3.7" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "anthropic-0.25.9-py3-none-any.whl", hash = "sha256:d0b17d442160356a531593b237de55d3125cc6fa708f1268c214107e61c81c57"}, {file = "anthropic-0.25.9.tar.gz", hash = "sha256:a4ec810b1cfbf3340af99b6f5bf599a83d66986e0f572a5f3bc4ebcab284f629"}, @@ -175,7 +170,6 @@ description = "High level compatibility layer for multiple asynchronous event lo optional = false python-versions = ">=3.9" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, @@ -199,7 +193,7 @@ description = "Timeout context manager for asyncio programs" optional = false python-versions = ">=3.7" groups = ["main", "test"] -markers = "python_version < \"3.11\" and platform_python_implementation == \"PyPy\" or python_version == \"3.10\"" +markers = "python_version == \"3.10\"" files = [ {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"}, {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"}, @@ -212,7 +206,6 @@ description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, @@ -233,7 +226,6 @@ description = "A tool that automatically formats Python code to conform to the P optional = false python-versions = ">=3.8" groups = ["dev"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "autopep8-2.2.0-py2.py3-none-any.whl", hash = "sha256:05418a981f038969d8bdcd5636bf15948db7555ae944b9f79b5a34b35f1370d4"}, {file = "autopep8-2.2.0.tar.gz", hash = "sha256:d306a0581163ac29908280ad557773a95a9bede072c0fafed6f141f5311f43c1"}, @@ -250,7 +242,6 @@ description = "Function decoration for backoff and retry" optional = false python-versions = ">=3.7,<4.0" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, @@ -263,7 +254,6 @@ description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, @@ -276,7 +266,6 @@ description = "The Real First Universal Charset Detector. Open, modern and activ optional = false python-versions = ">=3.7" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, @@ -379,7 +368,6 @@ description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["main", "dev", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -392,7 +380,6 @@ description = "Fast, scalable unique ID generation" optional = false python-versions = "*" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "cuid-0.4.tar.gz", hash = "sha256:74eaba154916a2240405c3631acee708c263ef8fa05a86820b87d0f59f84e978"}, ] @@ -404,7 +391,6 @@ description = "Python @deprecated decorator to deprecate old python classes, fun optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"}, {file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"}, @@ -423,7 +409,6 @@ description = "Distro - an OS platform information API" optional = false python-versions = ">=3.6" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, @@ -436,7 +421,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["main", "dev", "test"] -markers = "python_version < \"3.11\" and platform_python_implementation == \"PyPy\" or python_version == \"3.10\"" +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -452,7 +437,6 @@ description = "A platform independent file lock." optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, @@ -470,7 +454,6 @@ description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" groups = ["dev"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "flake8-7.0.0-py2.py3-none-any.whl", hash = "sha256:a6dfbb75e03252917f2473ea9653f7cd799c3064e54d4c8140044c5c065f53c3"}, {file = "flake8-7.0.0.tar.gz", hash = "sha256:33f96621059e65eec474169085dc92bf26e7b2d47366b70be2f67ab80dc25132"}, @@ -488,7 +471,6 @@ description = "A list-like structure which implements collections.abc.MutableSeq optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, @@ -591,7 +573,6 @@ description = "File-system specification" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "fsspec-2024.12.0-py3-none-any.whl", hash = "sha256:b520aed47ad9804237ff878b504267a3b0b441e97508bd6d2d8774e3db85cee2"}, {file = "fsspec-2024.12.0.tar.gz", hash = "sha256:670700c977ed2fb51e0d9f9253177ed20cbde4a3e5c0283cc5385b5870c8533f"}, @@ -632,7 +613,6 @@ description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "googleapis_common_protos-1.66.0-py2.py3-none-any.whl", hash = "sha256:d7abcd75fabb2e0ec9f74466401f6c119a0b498e27370e9be4c94cb7e382b8ed"}, {file = "googleapis_common_protos-1.66.0.tar.gz", hash = "sha256:c3e7b33d15fdca5374cc0a7346dd92ffa847425cc4ea941d970f13680052ec8c"}, @@ -651,7 +631,7 @@ description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" groups = ["test"] -markers = "(platform_python_implementation == \"PyPy\" or python_version == \"3.10\" or python_version == \"3.11\" or python_version == \"3.12\" or python_version == \"3.13\") and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\") and python_version <= \"3.13\"" +markers = "(platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\") and python_version < \"3.14\"" files = [ {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, @@ -739,7 +719,6 @@ description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "grpcio-1.69.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:2060ca95a8db295ae828d0fc1c7f38fb26ccd5edf9aa51a0f44251f5da332e97"}, {file = "grpcio-1.69.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:2e52e107261fd8fa8fa457fe44bfadb904ae869d87c1280bf60f93ecd3e79278"}, @@ -808,7 +787,6 @@ description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, @@ -821,7 +799,6 @@ description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, @@ -844,7 +821,6 @@ description = "The next generation HTTP client." optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, @@ -870,7 +846,6 @@ description = "Client library to download and publish models, datasets and other optional = false python-versions = ">=3.8.0" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "huggingface_hub-0.27.1-py3-none-any.whl", hash = "sha256:1c5155ca7d60b60c2e2fc38cbb3ffb7f7c3adf48f824015b219af9061771daec"}, {file = "huggingface_hub-0.27.1.tar.gz", hash = "sha256:c004463ca870283909d715d20f066ebd6968c2207dae9393fdffb3c1d4d8f98b"}, @@ -906,7 +881,6 @@ description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -922,7 +896,6 @@ description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, @@ -947,7 +920,6 @@ description = "A port of Ruby on Rails inflector to Python" optional = false python-versions = ">=3.5" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"}, {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, @@ -960,7 +932,6 @@ description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" groups = ["dev", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -973,7 +944,6 @@ description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -992,7 +962,6 @@ description = "Fast iterable JSON parser." optional = false python-versions = ">=3.8" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "jiter-0.8.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ca8577f6a413abe29b079bc30f907894d7eb07a865c4df69475e868d73e71c7b"}, {file = "jiter-0.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b25bd626bde7fb51534190c7e3cb97cee89ee76b76d7585580e22f34f5e3f393"}, @@ -1079,7 +1048,6 @@ description = "Apply JSON-Patches (RFC 6902)" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, @@ -1095,7 +1063,6 @@ description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false python-versions = ">=3.7" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, @@ -1108,7 +1075,6 @@ description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "langchain-0.2.17-py3-none-any.whl", hash = "sha256:a97a33e775f8de074370aecab95db148b879c794695d9e443c95457dce5eb525"}, {file = "langchain-0.2.17.tar.gz", hash = "sha256:5a99ce94aae05925851777dba45cbf2c475565d1e91cbe7d82c5e329d514627e"}, @@ -1137,7 +1103,6 @@ description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.8.1" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "langchain_core-0.2.43-py3-none-any.whl", hash = "sha256:619601235113298ebf8252a349754b7c28d3cf7166c7c922da24944b78a9363a"}, {file = "langchain_core-0.2.43.tar.gz", hash = "sha256:42c2ef6adedb911f4254068b6adc9eb4c4075f6c8cb3d83590d3539a815695f5"}, @@ -1162,7 +1127,6 @@ description = "An integration package connecting OpenAI and LangChain" optional = false python-versions = "<4.0,>=3.8.1" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "langchain_openai-0.1.25-py3-none-any.whl", hash = "sha256:f0b34a233d0d9cb8fce6006c903e57085c493c4f0e32862b99063b96eaedb109"}, {file = "langchain_openai-0.1.25.tar.gz", hash = "sha256:eb116f744f820247a72f54313fb7c01524fba0927120d4e899e5e4ab41ad3928"}, @@ -1180,7 +1144,6 @@ description = "LangChain text splitting utilities" optional = false python-versions = "<4.0,>=3.8.1" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "langchain_text_splitters-0.2.4-py3-none-any.whl", hash = "sha256:2702dee5b7cbdd595ccbe43b8d38d01a34aa8583f4d6a5a68ad2305ae3e7b645"}, {file = "langchain_text_splitters-0.2.4.tar.gz", hash = "sha256:f7daa7a3b0aa8309ce248e2e2b6fc8115be01118d336c7f7f7dfacda0e89bf29"}, @@ -1196,7 +1159,6 @@ description = "Client library to connect to the LangSmith LLM Tracing and Evalua optional = false python-versions = "<4.0,>=3.8.1" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "langsmith-0.1.147-py3-none-any.whl", hash = "sha256:7166fc23b965ccf839d64945a78e9f1157757add228b086141eb03a60d699a15"}, {file = "langsmith-0.1.147.tar.gz", hash = "sha256:2e933220318a4e73034657103b3b1a3a6109cc5db3566a7e8e03be8d6d7def7a"}, @@ -1222,7 +1184,6 @@ description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -1294,7 +1255,6 @@ description = "McCabe checker, plugin for flake8" optional = false python-versions = ">=3.6" groups = ["dev"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, @@ -1307,7 +1267,6 @@ description = "An implementation of time.monotonic() for Python 2 & < 3.3" optional = false python-versions = "*" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"}, {file = "monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7"}, @@ -1320,7 +1279,6 @@ description = "multidict implementation" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, @@ -1426,7 +1384,6 @@ description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, @@ -1473,7 +1430,6 @@ description = "The official Python library for the openai API" optional = false python-versions = ">=3.8" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "openai-1.59.7-py3-none-any.whl", hash = "sha256:cfa806556226fa96df7380ab2e29814181d56fea44738c2b0e581b462c268692"}, {file = "openai-1.59.7.tar.gz", hash = "sha256:043603def78c00befb857df9f0a16ee76a3af5984ba40cb7ee5e2f40db4646bf"}, @@ -1500,7 +1456,6 @@ description = "OpenTelemetry Python API" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_api-1.36.0-py3-none-any.whl", hash = "sha256:02f20bcacf666e1333b6b1f04e647dc1d5111f86b8e510238fcc56d7762cda8c"}, {file = "opentelemetry_api-1.36.0.tar.gz", hash = "sha256:9a72572b9c416d004d492cbc6e61962c0501eaf945ece9b5a0f56597d8348aa0"}, @@ -1517,7 +1472,6 @@ description = "OpenTelemetry Collector Exporters" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_exporter_otlp-1.36.0-py3-none-any.whl", hash = "sha256:de93b7c45bcc78296998775d52add7c63729e83ef2cd6560730a6b336d7f6494"}, {file = "opentelemetry_exporter_otlp-1.36.0.tar.gz", hash = "sha256:72f166ea5a8923ac42889337f903e93af57db8893de200369b07401e98e4e06b"}, @@ -1534,7 +1488,6 @@ description = "OpenTelemetry Protobuf encoding" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_exporter_otlp_proto_common-1.36.0-py3-none-any.whl", hash = "sha256:0fc002a6ed63eac235ada9aa7056e5492e9a71728214a61745f6ad04b923f840"}, {file = "opentelemetry_exporter_otlp_proto_common-1.36.0.tar.gz", hash = "sha256:6c496ccbcbe26b04653cecadd92f73659b814c6e3579af157d8716e5f9f25cbf"}, @@ -1550,7 +1503,6 @@ description = "OpenTelemetry Collector Protobuf over gRPC Exporter" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_exporter_otlp_proto_grpc-1.36.0-py3-none-any.whl", hash = "sha256:734e841fc6a5d6f30e7be4d8053adb703c70ca80c562ae24e8083a28fadef211"}, {file = "opentelemetry_exporter_otlp_proto_grpc-1.36.0.tar.gz", hash = "sha256:b281afbf7036b325b3588b5b6c8bb175069e3978d1bd24071f4a59d04c1e5bbf"}, @@ -1575,7 +1527,6 @@ description = "OpenTelemetry Collector Protobuf over HTTP Exporter" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_exporter_otlp_proto_http-1.36.0-py3-none-any.whl", hash = "sha256:3d769f68e2267e7abe4527f70deb6f598f40be3ea34c6adc35789bea94a32902"}, {file = "opentelemetry_exporter_otlp_proto_http-1.36.0.tar.gz", hash = "sha256:dd3637f72f774b9fc9608ab1ac479f8b44d09b6fb5b2f3df68a24ad1da7d356e"}, @@ -1597,7 +1548,6 @@ description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Py optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_instrumentation-0.57b0-py3-none-any.whl", hash = "sha256:9109280f44882e07cec2850db28210b90600ae9110b42824d196de357cbddf7e"}, {file = "opentelemetry_instrumentation-0.57b0.tar.gz", hash = "sha256:f2a30135ba77cdea2b0e1df272f4163c154e978f57214795d72f40befd4fcf05"}, @@ -1611,12 +1561,11 @@ wrapt = ">=1.0.0,<2.0.0" [[package]] name = "opentelemetry-instrumentation-alephalpha" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Aleph Alpha instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1635,12 +1584,11 @@ url = "../opentelemetry-instrumentation-alephalpha" [[package]] name = "opentelemetry-instrumentation-anthropic" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Anthropic instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1659,12 +1607,11 @@ url = "../opentelemetry-instrumentation-anthropic" [[package]] name = "opentelemetry-instrumentation-bedrock" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Bedrock instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1682,12 +1629,11 @@ url = "../opentelemetry-instrumentation-bedrock" [[package]] name = "opentelemetry-instrumentation-chromadb" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Chroma DB instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1706,12 +1652,11 @@ url = "../opentelemetry-instrumentation-chromadb" [[package]] name = "opentelemetry-instrumentation-cohere" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Cohere instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1730,12 +1675,11 @@ url = "../opentelemetry-instrumentation-cohere" [[package]] name = "opentelemetry-instrumentation-crewai" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry crewAI instrumentation" optional = false python-versions = ">=3.10,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1754,12 +1698,11 @@ url = "../opentelemetry-instrumentation-crewai" [[package]] name = "opentelemetry-instrumentation-google-generativeai" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Google Generative AI instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1778,12 +1721,11 @@ url = "../opentelemetry-instrumentation-google-generativeai" [[package]] name = "opentelemetry-instrumentation-groq" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Groq instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1802,12 +1744,11 @@ url = "../opentelemetry-instrumentation-groq" [[package]] name = "opentelemetry-instrumentation-haystack" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Haystack instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1826,12 +1767,11 @@ url = "../opentelemetry-instrumentation-haystack" [[package]] name = "opentelemetry-instrumentation-lancedb" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Lancedb instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1850,12 +1790,11 @@ url = "../opentelemetry-instrumentation-lancedb" [[package]] name = "opentelemetry-instrumentation-langchain" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Langchain instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1874,12 +1813,11 @@ url = "../opentelemetry-instrumentation-langchain" [[package]] name = "opentelemetry-instrumentation-llamaindex" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry LlamaIndex instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1905,7 +1843,6 @@ description = "OpenTelemetry Logging instrumentation" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_instrumentation_logging-0.57b0-py3-none-any.whl", hash = "sha256:9f57d13bf776f6507f8ccff16a7aa6e6e753672708943925a794f16152504a04"}, {file = "opentelemetry_instrumentation_logging-0.57b0.tar.gz", hash = "sha256:44dbeb8aaf643e95d7311b699b8d368b1ecdb8404f1563f19f2b3ce2b4c6a035"}, @@ -1917,12 +1854,11 @@ opentelemetry-instrumentation = "0.57b0" [[package]] name = "opentelemetry-instrumentation-marqo" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Marqo instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1941,12 +1877,11 @@ url = "../opentelemetry-instrumentation-marqo" [[package]] name = "opentelemetry-instrumentation-mcp" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry mcp instrumentation" optional = false python-versions = ">=3.10,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1966,12 +1901,11 @@ url = "../opentelemetry-instrumentation-mcp" [[package]] name = "opentelemetry-instrumentation-milvus" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Milvus instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -1990,12 +1924,11 @@ url = "../opentelemetry-instrumentation-milvus" [[package]] name = "opentelemetry-instrumentation-mistralai" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Mistral AI instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2014,12 +1947,11 @@ url = "../opentelemetry-instrumentation-mistralai" [[package]] name = "opentelemetry-instrumentation-ollama" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Ollama instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2038,12 +1970,11 @@ url = "../opentelemetry-instrumentation-ollama" [[package]] name = "opentelemetry-instrumentation-openai" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry OpenAI instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2062,12 +1993,11 @@ url = "../opentelemetry-instrumentation-openai" [[package]] name = "opentelemetry-instrumentation-openai-agents" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry OpenAI Agents instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2086,12 +2016,11 @@ url = "../opentelemetry-instrumentation-openai-agents" [[package]] name = "opentelemetry-instrumentation-pinecone" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Pinecone instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2110,12 +2039,11 @@ url = "../opentelemetry-instrumentation-pinecone" [[package]] name = "opentelemetry-instrumentation-qdrant" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Qdrant instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2139,7 +2067,6 @@ description = "OpenTelemetry Redis instrumentation" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_instrumentation_redis-0.57b0-py3-none-any.whl", hash = "sha256:4e988016e74d8fabc0be93a30462bce223423874c3fa53f0a154b0fe050041f9"}, {file = "opentelemetry_instrumentation_redis-0.57b0.tar.gz", hash = "sha256:54fcd749dee6eebcd137c0f2d840d810fc4225368caf5f4cc91bfe0d13eb9176"}, @@ -2156,12 +2083,11 @@ instruments = ["redis (>=2.6)"] [[package]] name = "opentelemetry-instrumentation-replicate" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Replicate instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2185,7 +2111,6 @@ description = "OpenTelemetry requests instrumentation" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_instrumentation_requests-0.57b0-py3-none-any.whl", hash = "sha256:66a576ac8080724ddc8a14c39d16bb5f430991bd504fdbea844c7a063f555971"}, {file = "opentelemetry_instrumentation_requests-0.57b0.tar.gz", hash = "sha256:193bd3fd1f14737721876fb1952dffc7d43795586118df633a91ecd9057446ff"}, @@ -2202,12 +2127,11 @@ instruments = ["requests (>=2.0,<3.0)"] [[package]] name = "opentelemetry-instrumentation-sagemaker" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry SageMaker instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2228,7 +2152,6 @@ description = "OpenTelemetry SQLAlchemy instrumentation" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_instrumentation_sqlalchemy-0.57b0-py3-none-any.whl", hash = "sha256:8a1a815331cb04fc95aa7c50e9c681cdccfb12e1fa4522f079fe4b24753ae106"}, {file = "opentelemetry_instrumentation_sqlalchemy-0.57b0.tar.gz", hash = "sha256:95667326b7cc22bb4bc9941f98ca22dd177679f9a4d277646cc21074c0d732ff"}, @@ -2251,7 +2174,6 @@ description = "Thread context propagation support for OpenTelemetry" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_instrumentation_threading-0.57b0-py3-none-any.whl", hash = "sha256:adfd64857c8c78d6111cf80552311e1713bad64272dd81abdd61f07b892a161b"}, {file = "opentelemetry_instrumentation_threading-0.57b0.tar.gz", hash = "sha256:06fa4c98d6bfe4670e7532497670ac202db42afa647ff770aedce0e422421c6e"}, @@ -2264,12 +2186,11 @@ wrapt = ">=1.0.0,<2.0.0" [[package]] name = "opentelemetry-instrumentation-together" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Together AI instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2288,12 +2209,11 @@ url = "../opentelemetry-instrumentation-together" [[package]] name = "opentelemetry-instrumentation-transformers" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry transformers instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2314,7 +2234,6 @@ description = "OpenTelemetry urllib3 instrumentation" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_instrumentation_urllib3-0.57b0-py3-none-any.whl", hash = "sha256:337ecac6df3ff92026b51c64df7dd4a3fff52f2dc96036ea9371670243bf83c6"}, {file = "opentelemetry_instrumentation_urllib3-0.57b0.tar.gz", hash = "sha256:f49d8c3d1d81ae56304a08b14a7f564d250733ed75cd2210ccef815b5af2eea1"}, @@ -2332,12 +2251,11 @@ instruments = ["urllib3 (>=1.0.0,<3.0.0)"] [[package]] name = "opentelemetry-instrumentation-vertexai" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Vertex AI instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2356,12 +2274,11 @@ url = "../opentelemetry-instrumentation-vertexai" [[package]] name = "opentelemetry-instrumentation-watsonx" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry IBM Watsonx Instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2380,12 +2297,11 @@ url = "../opentelemetry-instrumentation-watsonx" [[package]] name = "opentelemetry-instrumentation-weaviate" -version = "0.45.6" +version = "0.46.1" description = "OpenTelemetry Weaviate instrumentation" optional = false python-versions = ">=3.9,<4" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [] develop = true @@ -2402,6 +2318,29 @@ instruments = [] type = "directory" url = "../opentelemetry-instrumentation-weaviate" +[[package]] +name = "opentelemetry-instrumentation-writer" +version = "0.0.1" +description = "OpenTelemetry Writer instrumentation" +optional = false +python-versions = ">=3.10,<4" +groups = ["main"] +files = [] +develop = true + +[package.dependencies] +opentelemetry-api = "^1.28.0" +opentelemetry-instrumentation = ">=0.50b0" +opentelemetry-semantic-conventions = ">=0.50b0" +opentelemetry-semantic-conventions-ai = ">=0.4.11" + +[package.extras] +instruments = [] + +[package.source] +type = "directory" +url = "../opentelemetry-instrumentation-writer" + [[package]] name = "opentelemetry-proto" version = "1.36.0" @@ -2409,7 +2348,6 @@ description = "OpenTelemetry Python Proto" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_proto-1.36.0-py3-none-any.whl", hash = "sha256:151b3bf73a09f94afc658497cf77d45a565606f62ce0c17acb08cd9937ca206e"}, {file = "opentelemetry_proto-1.36.0.tar.gz", hash = "sha256:0f10b3c72f74c91e0764a5ec88fd8f1c368ea5d9c64639fb455e2854ef87dd2f"}, @@ -2425,7 +2363,6 @@ description = "OpenTelemetry Python SDK" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_sdk-1.36.0-py3-none-any.whl", hash = "sha256:19fe048b42e98c5c1ffe85b569b7073576ad4ce0bcb6e9b4c6a39e890a6c45fb"}, {file = "opentelemetry_sdk-1.36.0.tar.gz", hash = "sha256:19c8c81599f51b71670661ff7495c905d8fdf6976e41622d5245b791b06fa581"}, @@ -2443,7 +2380,6 @@ description = "OpenTelemetry Semantic Conventions" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_semantic_conventions-0.57b0-py3-none-any.whl", hash = "sha256:757f7e76293294f124c827e514c2a3144f191ef175b069ce8d1211e1e38e9e78"}, {file = "opentelemetry_semantic_conventions-0.57b0.tar.gz", hash = "sha256:609a4a79c7891b4620d64c7aac6898f872d790d75f22019913a660756f27ff32"}, @@ -2460,7 +2396,6 @@ description = "OpenTelemetry Semantic Conventions Extension for Large Language M optional = false python-versions = "<4,>=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_semantic_conventions_ai-0.4.13-py3-none-any.whl", hash = "sha256:883a30a6bb5deaec0d646912b5f9f6dcbb9f6f72557b73d0f2560bf25d13e2d5"}, {file = "opentelemetry_semantic_conventions_ai-0.4.13.tar.gz", hash = "sha256:94efa9fb4ffac18c45f54a3a338ffeb7eedb7e1bb4d147786e77202e159f0036"}, @@ -2473,7 +2408,6 @@ description = "Web util for OpenTelemetry" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "opentelemetry_util_http-0.57b0-py3-none-any.whl", hash = "sha256:e54c0df5543951e471c3d694f85474977cd5765a3b7654398c83bab3d2ffb8e9"}, {file = "opentelemetry_util_http-0.57b0.tar.gz", hash = "sha256:f7417595ead0eb42ed1863ec9b2f839fc740368cd7bbbfc1d0a47bc1ab0aba11"}, @@ -2572,7 +2506,6 @@ description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "dev", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -2585,7 +2518,6 @@ description = "Powerful data structures for data analysis, time series, and stat optional = false python-versions = ">=3.9" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pandas-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:22c2e866f7209ebc3a8f08d75766566aae02bcc91d196935a1d9e59c7b990ac9"}, {file = "pandas-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3583d348546201aff730c8c47e49bc159833f971c2899d6097bce68b9112a4f1"}, @@ -2673,7 +2605,6 @@ description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" groups = ["dev", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -2690,7 +2621,6 @@ description = "Integrate PostHog into any python application." optional = false python-versions = "*" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "posthog-3.8.3-py2.py3-none-any.whl", hash = "sha256:7215c4d7649b0c87905b42f460403311564996d776ab48d39852f46539a50f22"}, {file = "posthog-3.8.3.tar.gz", hash = "sha256:263df03ea312d4b47a3d5ea393fdb22ff2ed78140d5ce9af9dd0618ae245a44b"}, @@ -2716,7 +2646,6 @@ description = "Accelerated property cache" optional = false python-versions = ">=3.9" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6"}, {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2"}, @@ -2809,7 +2738,6 @@ description = "" optional = false python-versions = ">=3.8" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "protobuf-5.29.3-cp310-abi3-win32.whl", hash = "sha256:3ea51771449e1035f26069c4c7fd51fba990d07bc55ba80701c78f886bf9c888"}, {file = "protobuf-5.29.3-cp310-abi3-win_amd64.whl", hash = "sha256:a4fa6f80816a9a0678429e84973f2f98cbc218cca434abe8db2ad0bffc98503a"}, @@ -2831,7 +2759,6 @@ description = "Python style guide checker" optional = false python-versions = ">=3.8" groups = ["dev"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, @@ -2844,7 +2771,6 @@ description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pydantic-2.10.5-py3-none-any.whl", hash = "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53"}, {file = "pydantic-2.10.5.tar.gz", hash = "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff"}, @@ -2866,7 +2792,6 @@ description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, @@ -2980,7 +2905,6 @@ description = "passive checker of Python programs" optional = false python-versions = ">=3.8" groups = ["dev"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, @@ -2993,7 +2917,6 @@ description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" groups = ["dev", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, @@ -3017,7 +2940,6 @@ description = "Pytest support for asyncio" optional = false python-versions = ">=3.8" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pytest_asyncio-0.23.8-py3-none-any.whl", hash = "sha256:50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2"}, {file = "pytest_asyncio-0.23.8.tar.gz", hash = "sha256:759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3"}, @@ -3037,7 +2959,6 @@ description = "A pytest plugin that allows you recording of network interactions optional = false python-versions = ">=3.7" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pytest_recording-0.13.2-py3-none-any.whl", hash = "sha256:3820fe5743d1ac46e807989e11d073cb776a60bdc544cf43ebca454051b22d13"}, {file = "pytest_recording-0.13.2.tar.gz", hash = "sha256:000c3babbb466681457fd65b723427c1779a0c6c17d9e381c3142a701e124877"}, @@ -3058,7 +2979,6 @@ description = "pytest-sugar is a plugin for pytest that changes the default look optional = false python-versions = "*" groups = ["dev"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pytest-sugar-1.0.0.tar.gz", hash = "sha256:6422e83258f5b0c04ce7c632176c7732cab5fdb909cb39cca5c9139f81276c0a"}, {file = "pytest_sugar-1.0.0-py3-none-any.whl", hash = "sha256:70ebcd8fc5795dc457ff8b69d266a4e2e8a74ae0c3edc749381c64b5246c8dfd"}, @@ -3079,7 +2999,6 @@ description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -3095,7 +3014,6 @@ description = "World timezone definitions, modern and historical" optional = false python-versions = "*" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"}, {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"}, @@ -3108,7 +3026,6 @@ description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -3172,7 +3089,6 @@ description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, @@ -3277,7 +3193,6 @@ description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -3300,7 +3215,6 @@ description = "A utility belt for advanced users of python-requests" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, @@ -3316,7 +3230,6 @@ description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -3329,7 +3242,6 @@ description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -3342,7 +3254,6 @@ description = "Database Abstraction Library" optional = false python-versions = ">=3.7" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "SQLAlchemy-2.0.37-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da36c3b0e891808a7542c5c89f224520b9a16c7f5e4d6a1156955605e54aef0e"}, {file = "SQLAlchemy-2.0.37-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e7402ff96e2b073a98ef6d6142796426d705addd27b9d26c3b32dbaa06d7d069"}, @@ -3439,7 +3350,6 @@ description = "Retry code until it succeeds" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, @@ -3456,7 +3366,6 @@ description = "ANSI color formatting for output in terminal" optional = false python-versions = ">=3.9" groups = ["dev"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "termcolor-2.5.0-py3-none-any.whl", hash = "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8"}, {file = "termcolor-2.5.0.tar.gz", hash = "sha256:998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f"}, @@ -3472,7 +3381,6 @@ description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" optional = false python-versions = ">=3.9" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "tiktoken-0.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b07e33283463089c81ef1467180e3e00ab00d46c2c4bbcef0acab5f771d6695e"}, {file = "tiktoken-0.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9269348cb650726f44dd3bbb3f9110ac19a8dcc8f54949ad3ef652ca22a38e21"}, @@ -3521,7 +3429,6 @@ description = "" optional = false python-versions = ">=3.7" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "tokenizers-0.21.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:3c4c93eae637e7d2aaae3d376f06085164e1660f89304c0ab2b1d08a406636b2"}, {file = "tokenizers-0.21.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:f53ea537c925422a2e0e92a24cce96f6bc5046bbef24a1652a5edc8ba975f62e"}, @@ -3555,7 +3462,7 @@ description = "A lil' TOML parser" optional = false python-versions = ">=3.8" groups = ["dev", "test"] -markers = "python_version < \"3.11\" and platform_python_implementation == \"PyPy\" or python_version == \"3.10\"" +markers = "python_version == \"3.10\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -3598,7 +3505,6 @@ description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, @@ -3621,7 +3527,6 @@ description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -3634,7 +3539,6 @@ description = "Provider of IANA time zone data" optional = false python-versions = ">=2" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, @@ -3684,7 +3588,6 @@ description = "Automatically mock your HTTP interactions to simplify and speed u optional = false python-versions = ">=3.9" groups = ["test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "vcrpy-7.0.0-py2.py3-none-any.whl", hash = "sha256:55791e26c18daa363435054d8b35bd41a4ac441b6676167635d1b37a71dbe124"}, {file = "vcrpy-7.0.0.tar.gz", hash = "sha256:176391ad0425edde1680c5b20738ea3dc7fb942520a48d2993448050986b3a50"}, @@ -3709,7 +3612,6 @@ description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = ">=3.8" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, @@ -3799,7 +3701,6 @@ description = "Yet another URL library" optional = false python-versions = ">=3.9" groups = ["main", "test"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"}, {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"}, @@ -3897,7 +3798,6 @@ description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.9" groups = ["main"] -markers = "platform_python_implementation == \"PyPy\"" files = [ {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, @@ -3917,4 +3817,4 @@ datasets = [] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4" -content-hash = "dc358c5f58b8e7d291750aba083354acefbee6bd7fc0dd6aeacf57165a836767" +content-hash = "1df741fa5c87ef961c0729efa70e772d677163559b6b3c91f593086eb911abc8" diff --git a/packages/traceloop-sdk/pyproject.toml b/packages/traceloop-sdk/pyproject.toml index 167c1c1e9b..d9e0f8567c 100644 --- a/packages/traceloop-sdk/pyproject.toml +++ b/packages/traceloop-sdk/pyproject.toml @@ -60,6 +60,7 @@ opentelemetry-instrumentation-replicate = { path = "../opentelemetry-instrumenta opentelemetry-instrumentation-vertexai = { path = "../opentelemetry-instrumentation-vertexai", develop = true } opentelemetry-instrumentation-watsonx = { path = "../opentelemetry-instrumentation-watsonx", develop = true } opentelemetry-instrumentation-weaviate = { path = "../opentelemetry-instrumentation-weaviate", develop = true } +opentelemetry-instrumentation-writer = { path = "../opentelemetry-instrumentation-writer", develop = true } opentelemetry-instrumentation-alephalpha = { path = "../opentelemetry-instrumentation-alephalpha", develop = true } opentelemetry-instrumentation-marqo = { path = "../opentelemetry-instrumentation-marqo", develop = true } opentelemetry-instrumentation-groq = { path = "../opentelemetry-instrumentation-groq", develop = true } diff --git a/packages/traceloop-sdk/traceloop/sdk/instruments.py b/packages/traceloop-sdk/traceloop/sdk/instruments.py index aded2e0dfa..fb8ddd4e28 100644 --- a/packages/traceloop-sdk/traceloop/sdk/instruments.py +++ b/packages/traceloop-sdk/traceloop/sdk/instruments.py @@ -34,3 +34,4 @@ class Instruments(Enum): VERTEXAI = "vertexai" WATSONX = "watsonx" WEAVIATE = "weaviate" + WRITER = "writer" diff --git a/packages/traceloop-sdk/traceloop/sdk/tracing/tracing.py b/packages/traceloop-sdk/traceloop/sdk/tracing/tracing.py index 301e8212e1..bebd21bc20 100644 --- a/packages/traceloop-sdk/traceloop/sdk/tracing/tracing.py +++ b/packages/traceloop-sdk/traceloop/sdk/tracing/tracing.py @@ -538,6 +538,9 @@ def init_instrumentations( elif instrument == Instruments.WEAVIATE: if init_weaviate_instrumentor(): instrument_set = True + elif instrument == Instruments.WRITER: + if init_writer_instrumentor(): + instrument_set = True else: print(Fore.RED + f"Warning: {instrument} instrumentation does not exist.") print( @@ -1000,6 +1003,24 @@ def init_weaviate_instrumentor(): return False +def init_writer_instrumentor(): + try: + if is_package_installed("writer-sdk"): + Telemetry().capture("instrumentation:writer:init") + from opentelemetry.instrumentation.writer import WriterInstrumentor + + instrumentor = WriterInstrumentor( + exception_logger=lambda e: Telemetry().log_exception(e), + ) + if not instrumentor.is_instrumented_by_opentelemetry: + instrumentor.instrument() + return True + except Exception as e: + logging.error(f"Error initializing Writer instrumentor: {e}") + Telemetry().log_exception(e) + return False + + def init_alephalpha_instrumentor(): try: if is_package_installed("aleph_alpha_client"):