Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/scribae/brief.py
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,6 @@ def _create_agent(
seed: int | None = None,
) -> Agent[None, SeoBrief]:
"""Instantiate the Pydantic AI agent for generating briefs."""
settings.configure_environment()
model_settings = ModelSettings(temperature=temperature)
apply_optional_settings(model_settings, top_p=top_p, seed=seed)
model = make_model(model_name, model_settings=model_settings, settings=settings)
Expand Down
2 changes: 0 additions & 2 deletions src/scribae/idea.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,8 +230,6 @@ def _create_agent(
seed: int | None = None,
) -> Agent[None, IdeaList]:
"""Instantiate the Pydantic AI agent for generating ideas."""

settings.configure_environment()
model_settings = ModelSettings(temperature=temperature)
apply_optional_settings(model_settings, top_p=top_p, seed=seed)
model = make_model(model_name, model_settings=model_settings, settings=settings)
Expand Down
6 changes: 0 additions & 6 deletions src/scribae/llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,6 @@ def from_env(cls) -> OpenAISettings:
api_key = os.environ.get("OPENAI_API_KEY") or DEFAULT_API_KEY
return cls(base_url=base_url, api_key=api_key)

def configure_environment(self) -> None:
"""Configure environment variables expected by OpenAI-compatible clients."""
os.environ["OPENAI_BASE_URL"] = self.base_url
os.environ["OPENAI_API_BASE"] = self.base_url
os.environ["OPENAI_API_KEY"] = self.api_key


def make_model(
model_name: str, *, model_settings: ModelSettings, settings: OpenAISettings | None = None
Expand Down
1 change: 0 additions & 1 deletion src/scribae/translate/postedit.py
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,6 @@ def _create_agent(
seed: int | None = None,
) -> Agent[None, str] | None:
settings = OpenAISettings.from_env()
settings.configure_environment()
model_settings = ModelSettings(temperature=temperature)
apply_optional_settings(model_settings, top_p=top_p, seed=seed)
model = make_model(model_name, model_settings=model_settings, settings=settings)
Expand Down
17 changes: 12 additions & 5 deletions tests/unit/brief_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,16 +142,23 @@ def _boom(*_: object, **__: object) -> None:
assert "schema" in str(excinfo.value)


def test_configure_environment_sets_openai_environment(monkeypatch: pytest.MonkeyPatch) -> None:
def test_generate_brief_does_not_mutate_openai_environment(monkeypatch: pytest.MonkeyPatch, fake: Faker) -> None:
context = _briefing_context(fake)
brief_obj = SeoBrief(**_base_payload(fake))
monkeypatch.setattr("scribae.brief._invoke_agent", lambda *_, **__: brief_obj)
for var in ("OPENAI_BASE_URL", "OPENAI_API_BASE", "OPENAI_API_KEY"):
monkeypatch.delenv(var, raising=False)

settings = OpenAISettings(base_url="https://example.com/v1", api_key="token")
settings.configure_environment()
generate_brief(
context,
model_name="gpt-4o-mini",
temperature=0.2,
settings=settings,
)

assert os.environ["OPENAI_BASE_URL"] == "https://example.com/v1"
assert os.environ["OPENAI_API_BASE"] == "https://example.com/v1"
assert os.environ["OPENAI_API_KEY"] == "token"
for var in ("OPENAI_BASE_URL", "OPENAI_API_BASE", "OPENAI_API_KEY"):
assert var not in os.environ


def test_openai_settings_from_env_prefers_api_base(monkeypatch: pytest.MonkeyPatch) -> None:
Expand Down