public ChatCompletion create()

in instrumentation/openai-client-instrumentation/instrumentation-1.1/src/main/java/co/elastic/otel/openai/v1_1/wrappers/InstrumentedChatCompletionService.java [231:267]


  public ChatCompletion create(
      ChatCompletionCreateParams chatCompletionCreateParams, RequestOptions requestOptions) {

    RequestHolder requestHolder = new RequestHolder(chatCompletionCreateParams, settings);

    Context parentCtx = Context.current();
    if (!INSTRUMENTER.shouldStart(parentCtx, requestHolder)) {
      return createWithLogs(chatCompletionCreateParams, requestOptions);
    }

    Context ctx = INSTRUMENTER.start(parentCtx, requestHolder);
    ChatCompletion completion;
    try (Scope scope = ctx.makeCurrent()) {
      completion = createWithLogs(chatCompletionCreateParams, requestOptions);
    } catch (Throwable t) {
      INSTRUMENTER.end(ctx, requestHolder, null, t);
      throw t;
    }

    List<String> finishReasons =
        completion.choices().stream()
            .map(ChatCompletion.Choice::finishReason)
            .map(ChatCompletion.Choice.FinishReason::toString)
            .collect(Collectors.toList());
    Long inputTokens = null;
    Long completionTokens = null;
    Optional<CompletionUsage> usage = completion.usage();
    if (usage.isPresent()) {
      inputTokens = usage.get().promptTokens();
      completionTokens = usage.get().completionTokens();
    }
    ChatCompletionResult result =
        new ChatCompletionResult(
            completion.model(), completion.id(), finishReasons, inputTokens, completionTokens);
    INSTRUMENTER.end(ctx, requestHolder, result, null);
    return completion;
  }