From 2fd816434bfe459d289816e1aafa5faebe87234d Mon Sep 17 00:00:00 2001 From: Avinash Balakrishnan Date: Mon, 18 Aug 2025 16:08:38 -0700 Subject: [PATCH 1/2] adding logs to genslot --- mellea/stdlib/session.py | 11 +++++++++++ test/stdlib_basics/test_genslot.py | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mellea/stdlib/session.py b/mellea/stdlib/session.py index 45e5047d..ca952a18 100644 --- a/mellea/stdlib/session.py +++ b/mellea/stdlib/session.py @@ -2,6 +2,7 @@ from __future__ import annotations +from copy import deepcopy from typing import Any, Literal from mellea.backends import Backend, BaseModelSubclass @@ -361,13 +362,23 @@ def genslot( Returns: ModelOutputThunk: Output thunk """ + generate_logs: list[GenerateLog] = [] result: ModelOutputThunk = self.backend.generate_from_context( action=gen_slot, ctx=self.ctx, model_options=model_options, format=format, + generate_logs=generate_logs, tool_calls=tool_calls, ) + # make sure that the last and only Log is marked as the one related to result + assert len(generate_logs) == 1, "Simple call can only add one generate_log" + generate_logs[0].is_final_result = True + + self.ctx.insert_turn( + ContextTurn(deepcopy(gen_slot), result), generate_logs=generate_logs + ) + return result def query( diff --git a/test/stdlib_basics/test_genslot.py b/test/stdlib_basics/test_genslot.py index 2618a040..67d01613 100644 --- a/test/stdlib_basics/test_genslot.py +++ b/test/stdlib_basics/test_genslot.py @@ -1,6 +1,7 @@ import pytest from typing import Literal from mellea import generative, start_session +from mellea.stdlib.base import LinearContext @generative @@ -13,7 +14,7 @@ def write_me_an_email() -> str: ... @pytest.fixture def session(): - return start_session() + return start_session(ctx=LinearContext()) @pytest.fixture @@ -34,5 +35,11 @@ def test_sentiment_output(classify_sentiment_output): assert classify_sentiment_output in ["positive", "negative"] +def test_gen_slot_logs(classify_sentiment_output, session): + sent = classify_sentiment_output + last_prompt = session.last_prompt()[-1] + assert isinstance(last_prompt, dict) + assert set(last_prompt.keys()) == {"role", "content"} + if __name__ == "__main__": pytest.main([__file__]) From 5204ee44e7e445144b36790d7b6fb2c55bf0b29c Mon Sep 17 00:00:00 2001 From: Nathan Fulton Date: Tue, 19 Aug 2025 12:30:14 -0400 Subject: [PATCH 2/2] Moves import. --- mellea/stdlib/session.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mellea/stdlib/session.py b/mellea/stdlib/session.py index 76ebcf2b..0d2d6f97 100644 --- a/mellea/stdlib/session.py +++ b/mellea/stdlib/session.py @@ -2,10 +2,10 @@ from __future__ import annotations -from copy import deepcopy import contextvars from collections.abc import Generator from contextlib import contextmanager +from copy import deepcopy from typing import Any, Literal, Optional from mellea.backends import Backend, BaseModelSubclass