in src/dotnet/AzureAI.Proxy/OpenAIHandlers/Tokens.cs [20:46]
public static LogAnalyticsRecord CalculateChatInputTokens(HttpRequest request, LogAnalyticsRecord record)
{
//Rewind to first position to read the stream again
request.Body.Position = 0;
StreamReader reader = new StreamReader(request.Body, true);
string bodyText = reader.ReadToEnd();
JsonNode jsonNode = JsonSerializer.Deserialize<JsonNode>(bodyText);
var modelName = jsonNode["model"].ToString();
record.Model = modelName;
var messages = jsonNode["messages"].AsArray();
foreach (var message in messages)
{
var content = message["content"].ToString();
//calculate tokens using a tokenizer.
record.InputTokens += GetTokensFromString(content, modelName);
}
return record;
}