* python version updated from 3.9 into 3.12 * x2text-service updated with uv and python version 3.12 * x2text-service docker file updated * Unstract packages updated with uv * Runner updated with uv * Promptservice updated with uv * Platform service updated with uv * backend service updated with uv * root pyproject.toml file updated * sdk version updated in services * unstract package modules updated based on sdk version: * docker file update * pdm lock workflow modified to support uv * Docs updated based on uv support * lock automation updated * snowflake module version updated into 3.14.0 * tox updated to support UV * tox updated to support UV * tox updated with pytest * tox updated with pytest-md-report * tox updated with module requirements * python migration from 3.9 to 3.12 * tox updated with module requirements * runner updated * Commit uv.lock changes * runner updated * Commit uv.lock changes * pytest.ini added * x2text-service docker file updated * pytest.ini removed * environment updated to test * docformatter commented on pre-commit * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * some pre-commit issues ignored * some pre-commit issues ignored * some pre-commit issues ignored * some pre-commit issues ignored * some pre-commit issues ignored * pre-commit updates * un used import removed from platfrom service controller * tox issue fixed * tox issue fixed * docker files updated * backend dockerfile updated * open installation issue fixed * Tools docker file updated with base python version 3.12 * python version updated into min 3.12 in pyproject.toml * linting issue fixed * uv version upgraded into 0.6.14 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * migrations excluded from ruff * added PoethePoet task runner * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * feat: Added poe tasks for services (#1248) * Added poe tasks for services * reverted FE change made by mistake * updated tool-sidecar to uv and python to 3.12.9 * minor updates in pyproject descreption * feat: platform-service logging improvements (#1255) feat: Used flask util from core to improve logging in platform-service, added core as a dependency to platform-service: * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix: Platform-service build issue and numpy issue with Python 3.12 (#1258) * fix: Platform-service build and numpy issue with Py 3.12 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix: Removed backend dockerfile install statements for numpy --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * minor: Handled scenario when cost is not calculated due to no usage * minor: Corrected content shown for workflow input * fix: Minor fixes, used gthread for prompt-service, runner * Commit uv.lock changes * Removed unused line in tool dockerfile --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Chandrasekharan M <chandrasekharan@zipstack.com> Co-authored-by: Chandrasekharan M <117059509+chandrasekharan-zipstack@users.noreply.github.com> Co-authored-by: ali-zipstack <muhammad.ali@zipstack.com>
82 lines
2.5 KiB
Python
82 lines
2.5 KiB
Python
import uuid
|
|
|
|
from django.db import models
|
|
from utils.models.base_model import BaseModel
|
|
from utils.models.organization_mixin import (
|
|
DefaultOrganizationManagerMixin,
|
|
DefaultOrganizationMixin,
|
|
)
|
|
|
|
|
|
class UsageType(models.TextChoices):
|
|
LLM = "llm", "LLM Usage"
|
|
EMBEDDING = "embedding", "Embedding Usage"
|
|
|
|
|
|
class LLMUsageReason(models.TextChoices):
|
|
EXTRACTION = "extraction", "Extraction"
|
|
CHALLENGE = "challenge", "Challenge"
|
|
SUMMARIZE = "summarize", "Summarize"
|
|
|
|
|
|
class UsageModelManager(DefaultOrganizationManagerMixin, models.Manager):
|
|
pass
|
|
|
|
|
|
class Usage(DefaultOrganizationMixin, BaseModel):
|
|
id = models.UUIDField(
|
|
primary_key=True,
|
|
default=uuid.uuid4,
|
|
editable=False,
|
|
db_comment="Primary key for the usage entry, automatically generated UUID",
|
|
)
|
|
workflow_id = models.CharField(
|
|
max_length=255, null=True, blank=True, db_comment="Identifier for the workflow"
|
|
)
|
|
execution_id = models.CharField(
|
|
max_length=255,
|
|
null=True,
|
|
blank=True,
|
|
db_comment="Identifier for the execution instance",
|
|
)
|
|
adapter_instance_id = models.CharField(
|
|
max_length=255, db_comment="Identifier for the adapter instance"
|
|
)
|
|
run_id = models.UUIDField(
|
|
max_length=255, null=True, blank=True, db_comment="Identifier for the run"
|
|
)
|
|
usage_type = models.CharField(
|
|
max_length=255,
|
|
choices=UsageType.choices,
|
|
db_comment="Type of usage, either 'llm' or 'embedding'",
|
|
)
|
|
llm_usage_reason = models.CharField(
|
|
max_length=255,
|
|
choices=LLMUsageReason.choices,
|
|
null=True,
|
|
blank=True,
|
|
db_comment="Reason for LLM usage. Empty if usage_type is 'embedding'. ",
|
|
)
|
|
model_name = models.CharField(max_length=255, db_comment="Name of the model used")
|
|
embedding_tokens = models.IntegerField(
|
|
db_comment="Number of tokens used for embedding"
|
|
)
|
|
prompt_tokens = models.IntegerField(db_comment="Number of tokens used for the prompt")
|
|
completion_tokens = models.IntegerField(
|
|
db_comment="Number of tokens used for the completion"
|
|
)
|
|
total_tokens = models.IntegerField(db_comment="Total number of tokens used")
|
|
cost_in_dollars = models.FloatField(db_comment="Total number of tokens used")
|
|
# Manager
|
|
objects = UsageModelManager()
|
|
|
|
def __str__(self):
|
|
return str(self.id)
|
|
|
|
class Meta:
|
|
db_table = "usage"
|
|
indexes = [
|
|
models.Index(fields=["run_id"]),
|
|
models.Index(fields=["execution_id"]),
|
|
]
|