Skip to content

Commit

Permalink
Merge pull request #67 from Scale3-Labs/rohit/S3EN-2443-add-total-tokens
Browse files Browse the repository at this point in the history
Add total_tokens attribute
  • Loading branch information
rohit-kadhe authored Jul 10, 2024
2 parents 23cb1c2 + bae912d commit baf73ca
Show file tree
Hide file tree
Showing 7 changed files with 111 additions and 95 deletions.
7 changes: 6 additions & 1 deletion schemas/llm_span_attributes.json
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@
"format": "int32",
"description": "The number of tokens used in the llm prompt."
},
"gen_ai.usage.total_tokens": {
"type": "number",
"format": "int32",
"description": "The total number of tokens used in the llm request."
},
"gen_ai.usage.completion_tokens": {
"type": "number",
"format": "int32",
Expand Down Expand Up @@ -220,4 +225,4 @@
"url.full",
"url.path"
]
}
}
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name="trace-attributes", # Choose a unique name for PyPI
version="6.0.0",
version="6.0.1",
author="Karthik Kalyanaraman",
author_email="[email protected]",
description="LangTrace - Trace Attributes",
Expand Down
172 changes: 89 additions & 83 deletions src/python/langtrace/trace_attributes/models/llm_span_attributes.py
Original file line number Diff line number Diff line change
@@ -1,222 +1,228 @@
# generated by datamodel-codegen:
# filename: llm_span_attributes.json
# timestamp: 2024-06-27T16:51:15+00:00
# timestamp: 2024-07-10T15:09:12+00:00

from __future__ import annotations

from typing import List, Optional

from pydantic import BaseModel, ConfigDict, Field
from pydantic import BaseModel, Extra, Field


class LLMSpanAttributes(BaseModel):
model_config = ConfigDict(extra="allow")


langtrace_service_name: str = Field(
...,
alias="langtrace.service.name",
description="Name of the service. Includes all supported service providers by langtrace",
alias='langtrace.service.name',
description='Name of the service. Includes all supported service providers by langtrace',
)
langtrace_service_type: str = Field(
...,
alias="langtrace.service.type",
description="Type of the service. Allowed values: [llm, vectordb, framework]",
alias='langtrace.service.type',
description='Type of the service. Allowed values: [llm, vectordb, framework]',
)
langtrace_service_version: Optional[str] = Field(
None,
alias="langtrace.service.version",
description="Version of the service provider client",
alias='langtrace.service.version',
description='Version of the service provider client',
)
langtrace_version: str = Field(..., alias="langtrace.version")
langtrace_sdk_name: str = Field(..., alias="langtrace.sdk.name")
url_full: str = Field(..., alias="url.full", description="Full URL of the request")
url_path: str = Field(..., alias="url.path", description="Path of the request")
langtrace_version: str = Field(..., alias='langtrace.version')
langtrace_sdk_name: str = Field(..., alias='langtrace.sdk.name')
url_full: str = Field(..., alias='url.full', description='Full URL of the request')
url_path: str = Field(..., alias='url.path', description='Path of the request')
gen_ai_request_model: Optional[str] = Field(
None,
alias="gen_ai.request.model",
description="Model name from the input request",
alias='gen_ai.request.model',
description='Model name from the input request',
)
gen_ai_response_model: Optional[str] = Field(
None, alias="gen_ai.response.model", description="Model name from the response"
None, alias='gen_ai.response.model', description='Model name from the response'
)
gen_ai_request_temperature: Optional[float] = Field(
None,
alias="gen_ai.request.temperature",
description="Temperature value from the input request",
alias='gen_ai.request.temperature',
description='Temperature value from the input request',
)
gen_ai_request_logit_bias: Optional[str] = Field(
None,
alias="gen_ai.request.logit_bias",
description="Likelihood bias of the specified tokens the input request.",
alias='gen_ai.request.logit_bias',
description='Likelihood bias of the specified tokens the input request.',
)
gen_ai_request_logprobs: Optional[bool] = Field(
None,
alias="gen_ai.request.logprobs",
description="Logprobs flag returns log probabilities.",
alias='gen_ai.request.logprobs',
description='Logprobs flag returns log probabilities.',
)
gen_ai_request_top_logprobs: Optional[float] = Field(
None,
alias="gen_ai.request.top_logprobs",
description="Integer between 0 and 5 specifying the number of most likely tokens to return.",
alias='gen_ai.request.top_logprobs',
description='Integer between 0 and 5 specifying the number of most likely tokens to return.',
)
gen_ai_request_top_p: Optional[float] = Field(
None,
alias="gen_ai.request.top_p",
description="Top P value from the input request",
alias='gen_ai.request.top_p',
description='Top P value from the input request',
)
gen_ai_request_top_k: Optional[float] = Field(
None,
alias="gen_ai.request.top_k",
description="Top K results to return from the input request",
alias='gen_ai.request.top_k',
description='Top K results to return from the input request',
)
gen_ai_user: Optional[str] = Field(
None, alias="gen_ai.user", description="User ID from the input request"
None, alias='gen_ai.user', description='User ID from the input request'
)
gen_ai_prompt: Optional[str] = Field(
None, alias="gen_ai.prompt", description="Prompt text from the input request"
None, alias='gen_ai.prompt', description='Prompt text from the input request'
)
gen_ai_completion: Optional[str] = Field(
None,
alias="gen_ai.completion",
alias='gen_ai.completion',
description='Completion text from the response. This will be an array of json objects with the following format {"role": "", "content": ""}. Role can be one of the following values: [system, user, assistant, tool]',
)
gen_ai_request_stream: Optional[bool] = Field(
None,
alias="gen_ai.request.stream",
description="Stream flag from the input request",
alias='gen_ai.request.stream',
description='Stream flag from the input request',
)
gen_ai_request_encoding_formats: Optional[List[str]] = Field(
None,
alias="gen_ai.request.encoding_formats",
alias='gen_ai.request.encoding_formats',
description="Encoding formats from the input request. Allowed values: ['float', 'int8','uint8', 'binary', 'ubinary', 'base64']",
)
gen_ai_request_dimensions: Optional[float] = Field(
None,
alias="gen_ai.request.dimensions",
description="Dimensions from the input request",
alias='gen_ai.request.dimensions',
description='Dimensions from the input request',
)
gen_ai_response_id: Optional[str] = Field(
None,
alias="gen_ai.response_id",
description="Response ID from the output response",
alias='gen_ai.response_id',
description='Response ID from the output response',
)
gen_ai_response_finish_reasons: Optional[List[str]] = Field(
None,
alias="gen_ai.response.finish_reasons",
description="Array of reasons the model stopped generating tokens, corresponding to each generation received",
alias='gen_ai.response.finish_reasons',
description='Array of reasons the model stopped generating tokens, corresponding to each generation received',
)
gen_ai_system_fingerprint: Optional[str] = Field(
None,
alias="gen_ai.system_fingerprint",
description="System fingerprint of the system that generated the response",
alias='gen_ai.system_fingerprint',
description='System fingerprint of the system that generated the response',
)
gen_ai_request_documents: Optional[str] = Field(
None,
alias="gen_ai.request.documents",
description="Array of documents from the input request json stringified",
alias='gen_ai.request.documents',
description='Array of documents from the input request json stringified',
)
gen_ai_request_is_search_required: Optional[bool] = Field(
None,
alias="gen_ai.request.is_search_required",
description="Search flag from the input request",
alias='gen_ai.request.is_search_required',
description='Search flag from the input request',
)
gen_ai_request_tool_choice: Optional[str] = Field(
None,
alias="gen_ai.request.tool_choice",
description="Tool choice from the input request",
alias='gen_ai.request.tool_choice',
description='Tool choice from the input request',
)
gen_ai_response_tool_calls: Optional[str] = Field(
None,
alias="gen_ai.response.tool_calls",
description="Array of tool calls from the response json stringified",
alias='gen_ai.response.tool_calls',
description='Array of tool calls from the response json stringified',
)
gen_ai_request_max_tokens: Optional[float] = Field(
None,
alias="gen_ai.request.max_tokens",
description="The maximum number of tokens the LLM generates for a request.",
alias='gen_ai.request.max_tokens',
description='The maximum number of tokens the LLM generates for a request.',
)
gen_ai_usage_prompt_tokens: Optional[float] = Field(
None,
alias="gen_ai.usage.prompt_tokens",
description="The number of tokens used in the llm prompt.",
alias='gen_ai.usage.prompt_tokens',
description='The number of tokens used in the llm prompt.',
)
gen_ai_usage_total_tokens: Optional[float] = Field(
None,
alias='gen_ai.usage.total_tokens',
description='The total number of tokens used in the llm request.',
)
gen_ai_usage_completion_tokens: Optional[float] = Field(
None,
alias="gen_ai.usage.completion_tokens",
description="The number of tokens in the llm response.",
alias='gen_ai.usage.completion_tokens',
description='The number of tokens in the llm response.',
)
gen_ai_usage_search_units: Optional[float] = Field(
None,
alias="gen_ai.usage.search_units",
description="The number of search units used in the request.",
alias='gen_ai.usage.search_units',
description='The number of search units used in the request.',
)
gen_ai_request_seed: Optional[str] = Field(
None, alias="gen_ai.request.seed", description="Seed from the input request"
None, alias='gen_ai.request.seed', description='Seed from the input request'
)
gen_ai_request_frequency_penalty: Optional[float] = Field(
None,
alias="gen_ai.request.frequency_penalty",
description="Frequency penalty from the input request",
alias='gen_ai.request.frequency_penalty',
description='Frequency penalty from the input request',
)
gen_ai_request_presence_penalty: Optional[float] = Field(
None,
alias="gen_ai.request.presence_penalty",
description="Presence penalty from the input request",
alias='gen_ai.request.presence_penalty',
description='Presence penalty from the input request',
)
gen_ai_request_connectors: Optional[str] = Field(
None,
alias="gen_ai.request.connectors",
description="An array of connectors from the input request json stringified",
alias='gen_ai.request.connectors',
description='An array of connectors from the input request json stringified',
)
gen_ai_request_tools: Optional[str] = Field(
None,
alias="gen_ai.request.tools",
description="An array of tools from the input request json stringified",
alias='gen_ai.request.tools',
description='An array of tools from the input request json stringified',
)
gen_ai_request_tool_results: Optional[str] = Field(
None,
alias="gen_ai.request.tool_results",
description="An array of tool results from the input request json stringified",
alias='gen_ai.request.tool_results',
description='An array of tool results from the input request json stringified',
)
gen_ai_request_embedding_inputs: Optional[str] = Field(
None,
alias="gen_ai.request.embedding_inputs",
description="An array of embedding inputs from the input request json stringified",
alias='gen_ai.request.embedding_inputs',
description='An array of embedding inputs from the input request json stringified',
)
gen_ai_request_embedding_dataset_id: Optional[str] = Field(
None,
alias="gen_ai.request.embedding_dataset_id",
description="Embedding dataset ID from the input request",
alias='gen_ai.request.embedding_dataset_id',
description='Embedding dataset ID from the input request',
)
gen_ai_request_embedding_input_type: Optional[str] = Field(
None,
alias="gen_ai.request.embedding_input_type",
alias='gen_ai.request.embedding_input_type',
description="Embedding input type from the input request. Allowed values: [ 'search_document', 'search_query', 'classification', 'clustering']",
)
gen_ai_request_embedding_job_name: Optional[str] = Field(
None,
alias="gen_ai.request.embedding_job_name",
description="Embedding job name from the input request",
alias='gen_ai.request.embedding_job_name',
description='Embedding job name from the input request',
)
gen_ai_image_size: Optional[str] = Field(
None,
alias="gen_ai.image.size",
alias='gen_ai.image.size',
description="Image size from the input request. Allowed values: ['256x256', '512x512', '1024x1024']",
)
gen_ai_request_response_format: Optional[str] = Field(
None,
alias="gen_ai.request.response_format",
alias='gen_ai.request.response_format',
description="Response format from the input request. Allowed values: ['url', 'b64_json']",
)
http_max_retries: Optional[int] = Field(None, alias="http.max.retries")
http_timeout: Optional[int] = Field(None, alias="http.timeout")
http_max_retries: Optional[int] = Field(None, alias='http.max.retries')
http_timeout: Optional[int] = Field(None, alias='http.timeout')
gen_ai_cohere_rerank_query: Optional[str] = Field(
None,
alias="gen_ai.cohere.rerank.query",
description="Query from the input request for the rerank api",
alias='gen_ai.cohere.rerank.query',
description='Query from the input request for the rerank api',
)
gen_ai_cohere_rerank_results: Optional[str] = Field(
None,
alias="gen_ai.cohere.rerank.results",
description="Results from the rerank api",
alias='gen_ai.cohere.rerank.results',
description='Results from the rerank api',
)
8 changes: 4 additions & 4 deletions src/typescript/models/llm_span_attributes.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ export interface LLMSpanAttributes {
* The number of tokens used in the llm prompt.
*/
"gen_ai.usage.prompt_tokens"?: number;
/**
* The total number of tokens used in the llm request.
*/
"gen_ai.usage.total_tokens"?: number;
/**
* The number of tokens in the llm response.
*/
Expand Down Expand Up @@ -148,10 +152,6 @@ export interface LLMSpanAttributes {
* An array of tools from the input request json stringified
*/
"gen_ai.request.tools"?: string;
/**
* An array of tool inputs from the input request json stringified
*/
"gen_ai.request.tool_inputs"?: string;
/**
* An array of tool results from the input request json stringified
*/
Expand Down
6 changes: 3 additions & 3 deletions src/typescript/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions src/typescript/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@langtrase/trace-attributes",
"version": "6.0.2",
"version": "6.0.3",
"description": "LangTrace - Trace Attributes",
"main": "dist/index.js",
"types": "dist/index.d.ts",
Expand All @@ -19,4 +19,4 @@
"tiktoken": "^1.0.15",
"typescript": "^5.5.3"
}
}
}
Loading

0 comments on commit baf73ca

Please sign in to comment.