mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-10-10 13:28:40 +00:00
Renames `inference_recorder.py` to `api_recorder.py` and extends it to support recording/replaying tool invocations in addition to inference calls. This allows us to record web-search, etc. tool calls and thereafter apply recordings for `tests/integration/responses` ## Test Plan ``` export OPENAI_API_KEY=... export TAVILY_SEARCH_API_KEY=... ./scripts/integration-tests.sh --stack-config ci-tests \ --suite responses --inference-mode record-if-missing ```
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the terms described in the LICENSE file in
|
|
# the root directory of this source tree.
|
|
|
|
from collections.abc import Callable
|
|
|
|
IdFactory = Callable[[], str]
|
|
IdOverride = Callable[[str, IdFactory], str]
|
|
|
|
_id_override: IdOverride | None = None
|
|
|
|
|
|
def generate_object_id(kind: str, factory: IdFactory) -> str:
|
|
"""Generate an identifier for the given kind using the provided factory.
|
|
|
|
Allows tests to override ID generation deterministically by installing an
|
|
override callback via :func:`set_id_override`.
|
|
"""
|
|
|
|
override = _id_override
|
|
if override is not None:
|
|
return override(kind, factory)
|
|
return factory()
|
|
|
|
|
|
def set_id_override(override: IdOverride) -> IdOverride | None:
|
|
"""Install an override used to generate deterministic identifiers."""
|
|
|
|
global _id_override
|
|
|
|
previous = _id_override
|
|
_id_override = override
|
|
return previous
|
|
|
|
|
|
def reset_id_override(previous: IdOverride | None) -> None:
|
|
"""Restore the previous override returned by :func:`set_id_override`."""
|
|
|
|
global _id_override
|
|
_id_override = previous
|