Models API ReferenceΒΆ

Data models for representing sessions, traces, events, and observations.

AIOBS ModelsΒΆ

Models for the Shepherd/AIOBS backend.

AIOBS-specific models.

These models represent the data structures for the Shepherd/AIOBS backend.

class shepherd_mcp.models.aiobs.Callsite(*, file, line, function)[source]ΒΆ

Bases: BaseModel

Code location where a call was made.

Parameters:
file: strΒΆ
function: strΒΆ
line: intΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class shepherd_mcp.models.aiobs.Evaluation(*, id=None, eval_type=None, score=None, passed=None, label=None, result=None, feedback=None, human_feedback=None, evaluator=None, latency_ms=None, status=None, error=None, created_at=None)[source]ΒΆ

Bases: BaseModel

Evaluation result.

Parameters:
  • id (str | None)

  • eval_type (str | None)

  • score (float | None)

  • passed (bool | None)

  • label (str | None)

  • result (dict[str, Any] | None)

  • feedback (str | None)

  • human_feedback (str | None)

  • evaluator (str | None)

  • latency_ms (float | None)

  • status (str | None)

  • error (str | None)

  • created_at (str | None)

created_at: str | NoneΒΆ
error: str | NoneΒΆ
eval_type: str | NoneΒΆ
evaluator: str | NoneΒΆ
feedback: str | NoneΒΆ
human_feedback: str | NoneΒΆ
id: str | NoneΒΆ
label: str | NoneΒΆ
latency_ms: float | NoneΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

passed: bool | NoneΒΆ
result: dict[str, Any] | NoneΒΆ
score: float | NoneΒΆ
status: str | NoneΒΆ
class shepherd_mcp.models.aiobs.Event(*, provider, api, request=<factory>, response=None, error=None, started_at, ended_at, duration_ms, callsite=None, span_id, parent_span_id=None, session_id, evaluations=<factory>)[source]ΒΆ

Bases: BaseModel

LLM provider event (e.g., OpenAI, Anthropic calls).

Parameters:
api: strΒΆ
callsite: Callsite | NoneΒΆ
duration_ms: floatΒΆ
ended_at: floatΒΆ
error: str | NoneΒΆ
evaluations: list[dict[str, Any]]ΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

parent_span_id: str | NoneΒΆ
provider: strΒΆ
request: dict[str, Any]ΒΆ
response: dict[str, Any] | NoneΒΆ
session_id: strΒΆ
span_id: strΒΆ
started_at: floatΒΆ
class shepherd_mcp.models.aiobs.FunctionEvent(*, provider, api, name, module=None, args=None, kwargs=None, result=None, error=None, started_at, ended_at, duration_ms, callsite=None, span_id, parent_span_id=None, enh_prompt=False, enh_prompt_id=None, auto_enhance_after=None, session_id, evaluations=<factory>)[source]ΒΆ

Bases: BaseModel

Observed function event.

Parameters:
api: strΒΆ
args: list[Any] | NoneΒΆ
auto_enhance_after: int | NoneΒΆ
callsite: Callsite | NoneΒΆ
duration_ms: floatΒΆ
ended_at: floatΒΆ
enh_prompt: boolΒΆ
enh_prompt_id: str | NoneΒΆ
error: str | NoneΒΆ
evaluations: list[dict[str, Any]]ΒΆ
kwargs: dict[str, Any] | NoneΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

module: str | NoneΒΆ
name: strΒΆ
parent_span_id: str | NoneΒΆ
provider: strΒΆ
result: AnyΒΆ
session_id: strΒΆ
span_id: strΒΆ
started_at: floatΒΆ
class shepherd_mcp.models.aiobs.Session(*, id, name, started_at, ended_at=None, meta=<factory>, labels=<factory>)[source]ΒΆ

Bases: BaseModel

Session metadata.

Parameters:
ended_at: float | NoneΒΆ
id: strΒΆ
labels: dict[str, str]ΒΆ
meta: dict[str, Any]ΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: strΒΆ
started_at: floatΒΆ
class shepherd_mcp.models.aiobs.SessionsResponse(*, sessions=<factory>, events=<factory>, function_events=<factory>, trace_tree=<factory>, enh_prompt_traces=<factory>, generated_at=0, version=1)[source]ΒΆ

Bases: BaseModel

Response from /v1/sessions or /v1/sessions/{id}/tree.

Parameters:
enh_prompt_traces: list[Any]ΒΆ
events: list[Event]ΒΆ
function_events: list[FunctionEvent]ΒΆ
generated_at: floatΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

sessions: list[Session]ΒΆ
trace_tree: list[TraceNode]ΒΆ
version: intΒΆ
class shepherd_mcp.models.aiobs.TraceNode(*, provider, api, request=None, response=None, name=None, module=None, args=None, kwargs=None, result=None, error=None, started_at, ended_at, duration_ms, span_id, parent_span_id=None, session_id, event_type=None, children=<factory>, evaluations=<factory>)[source]ΒΆ

Bases: BaseModel

Node in the trace tree (can be either provider or function event).

Parameters:
api: strΒΆ
args: list[Any] | NoneΒΆ
children: list[TraceNode]ΒΆ
duration_ms: floatΒΆ
ended_at: floatΒΆ
error: str | NoneΒΆ
evaluations: list[dict[str, Any]]ΒΆ
event_type: str | NoneΒΆ
kwargs: dict[str, Any] | NoneΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

module: str | NoneΒΆ
name: str | NoneΒΆ
parent_span_id: str | NoneΒΆ
provider: strΒΆ
request: dict[str, Any] | NoneΒΆ
response: dict[str, Any] | NoneΒΆ
result: AnyΒΆ
session_id: strΒΆ
span_id: strΒΆ
started_at: floatΒΆ

Langfuse ModelsΒΆ

Models for the Langfuse platform.

Langfuse-specific models.

These models represent Langfuse’s data structures for traces, observations, sessions, and scores. They are separate from AIOBS models.

class shepherd_mcp.models.langfuse.LangfuseObservation(*, id, traceId, type, name=None, startTime, endTime=None, completionStartTime=None, model=None, modelParameters=None, input=None, output=None, usage=None, level=None, statusMessage=None, parentObservationId=None, version=None, metadata=None, latency=None, timeToFirstToken=None, promptId=None, promptName=None, promptVersion=None, calculatedInputCost=None, calculatedOutputCost=None, calculatedTotalCost=None)[source]ΒΆ

Bases: BaseModel

Observation (generation, span, or event) in Langfuse.

Parameters:
  • id (str)

  • traceId (str)

  • type (str)

  • name (str | None)

  • startTime (str)

  • endTime (str | None)

  • completionStartTime (str | None)

  • model (str | None)

  • modelParameters (dict[str, Any] | None)

  • input (Any | None)

  • output (Any | None)

  • usage (dict[str, Any] | None)

  • level (str | None)

  • statusMessage (str | None)

  • parentObservationId (str | None)

  • version (str | None)

  • metadata (dict[str, Any] | None)

  • latency (float | None)

  • timeToFirstToken (float | None)

  • promptId (str | None)

  • promptName (str | None)

  • promptVersion (int | None)

  • calculatedInputCost (float | None)

  • calculatedOutputCost (float | None)

  • calculatedTotalCost (float | None)

calculated_input_cost: float | NoneΒΆ
calculated_output_cost: float | NoneΒΆ
calculated_total_cost: float | NoneΒΆ
completion_start_time: str | NoneΒΆ
end_time: str | NoneΒΆ
id: strΒΆ
input: Any | NoneΒΆ
latency: float | NoneΒΆ
level: str | NoneΒΆ
metadata: dict[str, Any] | NoneΒΆ
model: str | NoneΒΆ
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_parameters: dict[str, Any] | NoneΒΆ
name: str | NoneΒΆ
output: Any | NoneΒΆ
parent_observation_id: str | NoneΒΆ
prompt_id: str | NoneΒΆ
prompt_name: str | NoneΒΆ
prompt_version: int | NoneΒΆ
start_time: strΒΆ
status_message: str | NoneΒΆ
time_to_first_token: float | NoneΒΆ
trace_id: strΒΆ
type: strΒΆ
usage: dict[str, Any] | NoneΒΆ
version: str | NoneΒΆ
class shepherd_mcp.models.langfuse.LangfuseObservationsResponse(*, data=<factory>, meta=<factory>)[source]ΒΆ

Bases: BaseModel

Response from /api/public/observations.

Parameters:
data: list[LangfuseObservation]ΒΆ
meta: dict[str, Any]ΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class shepherd_mcp.models.langfuse.LangfuseScore(*, id, traceId, observationId=None, name, value=None, stringValue=None, timestamp, source, dataType, comment=None, configId=None)[source]ΒΆ

Bases: BaseModel

Score/evaluation in Langfuse.

Parameters:
  • id (str)

  • traceId (str)

  • observationId (str | None)

  • name (str)

  • value (float | str | None)

  • stringValue (str | None)

  • timestamp (str)

  • source (str)

  • dataType (str)

  • comment (str | None)

  • configId (str | None)

comment: str | NoneΒΆ
config_id: str | NoneΒΆ
data_type: strΒΆ
id: strΒΆ
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: strΒΆ
observation_id: str | NoneΒΆ
source: strΒΆ
string_value: str | NoneΒΆ
timestamp: strΒΆ
trace_id: strΒΆ
value: float | str | NoneΒΆ
class shepherd_mcp.models.langfuse.LangfuseScoresResponse(*, data=<factory>, meta=<factory>)[source]ΒΆ

Bases: BaseModel

Response from /api/public/scores.

Parameters:
data: list[LangfuseScore]ΒΆ
meta: dict[str, Any]ΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class shepherd_mcp.models.langfuse.LangfuseSession(*, id, createdAt, projectId, userIds=<factory>, countTraces=0, sessionDuration=None, inputCost=0, outputCost=0, totalCost=0, inputTokens=0, outputTokens=0, totalTokens=0, totalCount=0, traces=<factory>)[source]ΒΆ

Bases: BaseModel

Session in Langfuse grouping related traces.

Parameters:
count_traces: intΒΆ
created_at: strΒΆ
id: strΒΆ
input_cost: floatΒΆ
input_tokens: intΒΆ
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

output_cost: floatΒΆ
output_tokens: intΒΆ
project_id: strΒΆ
session_duration: float | NoneΒΆ
total_cost: floatΒΆ
total_count: intΒΆ
total_tokens: intΒΆ
traces: list[LangfuseTrace]ΒΆ
user_ids: list[str]ΒΆ
class shepherd_mcp.models.langfuse.LangfuseSessionsResponse(*, data=<factory>, meta=<factory>)[source]ΒΆ

Bases: BaseModel

Response from /api/public/sessions.

Parameters:
data: list[LangfuseSession]ΒΆ
meta: dict[str, Any]ΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class shepherd_mcp.models.langfuse.LangfuseTrace(*, id, timestamp, name=None, userId=None, sessionId=None, release=None, version=None, metadata=None, tags=<factory>, public=False, input=None, output=None, latency=None, totalCost=None, observations=<factory>)[source]ΒΆ

Bases: BaseModel

Trace in Langfuse representing a complete workflow or conversation.

Parameters:
id: strΒΆ
input: Any | NoneΒΆ
latency: float | NoneΒΆ
metadata: dict[str, Any] | NoneΒΆ
model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str | NoneΒΆ
observations: list[str | LangfuseObservation]ΒΆ
output: Any | NoneΒΆ
public: boolΒΆ
release: str | NoneΒΆ
session_id: str | NoneΒΆ
tags: list[str]ΒΆ
timestamp: strΒΆ
total_cost: float | NoneΒΆ
user_id: str | NoneΒΆ
version: str | NoneΒΆ
class shepherd_mcp.models.langfuse.LangfuseTracesResponse(*, data=<factory>, meta=<factory>)[source]ΒΆ

Bases: BaseModel

Response from /api/public/traces.

Parameters:
data: list[LangfuseTrace]ΒΆ
meta: dict[str, Any]ΒΆ
model_config: ClassVar[ConfigDict] = {}ΒΆ

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].