Inference Logoinference.sh

Output Metadata

OutputMeta enables usage-based pricing by reporting what your app processes and generates.


Basic Structure

python
1from inferencesh import BaseAppOutput, OutputMeta, TextMeta, ImageMeta, VideoMeta, AudioMeta2 3class AppOutput(BaseAppOutput):4    result: File = Field(description="Generated output")5    # output_meta is inherited from BaseAppOutput

MetaItem Types

TypeClassKey Fields
TextTextMetatokens
ImageImageMetawidth, height, resolution_mp, steps, count
VideoVideoMetawidth, height, resolution, seconds
AudioAudioMetaseconds

Examples

LLM/Text Generation

Track both input (prompt) and output (completion) tokens:

python
1from inferencesh.models.usage import OutputMeta, TextMeta2 3# In your run method, after getting the response:4return AppOutput(5    response=generated_text,6    output_meta=OutputMeta(7        inputs=[TextMeta(tokens=prompt_tokens)],8        outputs=[TextMeta(tokens=completion_tokens)]9    )10)

For streaming responses, update token counts from the final chunk:

python
1# Track usage from stream chunks2if hasattr(chunk, "usage") and chunk.usage:3    input_tokens = chunk.usage.prompt_tokens4    output_tokens = chunk.usage.completion_tokens5 6# Build output with token tracking7output_meta = OutputMeta(8    inputs=[TextMeta(tokens=input_tokens)] if input_tokens else [],9    outputs=[TextMeta(tokens=output_tokens)] if output_tokens else []10)

Image Generation

python
1return AppOutput(2    image=File(path=output_path),3    output_meta=OutputMeta(4        outputs=[ImageMeta(5            width=1024,6            height=1024,7            resolution_mp=1.05,8            steps=20,9            count=110        )]11    )12)

Video Generation

python
1return AppOutput(2    video=File(path=output_path),3    output_meta=OutputMeta(4        outputs=[VideoMeta(5            width=1280,6            height=720,7            resolution="720p",8            seconds=5.09        )]10    )11)

Audio Generation

python
1return AppOutput(2    audio=File(path=output_path),3    output_meta=OutputMeta(4        outputs=[AudioMeta(seconds=30.0)]5    )6)

Custom Data

Use extra for app-specific pricing factors:

python
1output_meta=OutputMeta(2    outputs=[ImageMeta(3        width=1024,4        height=1024,5        extra={6            "model": "sdxl-turbo",7            "lora_count": 28        }9    )]10)

Best Practices

  1. Always populate output_meta if usage varies per request
  2. Use accurate token counts from the actual tokenizer
  3. Report actual dimensions - don't hardcode
  4. Include relevant extra data for pricing flexibility

Next

Secrets - API keys and sensitive values

we use cookies

we use cookies to ensure you get the best experience on our website. for more information on how we use cookies, please see our cookie policy.

by clicking "accept", you agree to our use of cookies.
learn more.