Files
unstract/backend/usage_v2/models.py
Jaseem Jas ba1df894d2 Python 3.9 to 3.12 (#1231)
* 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>
2025-04-24 16:07:02 +05:30

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"]),
]