Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Read tracing API data lazily #289

Merged
merged 1 commit into from
Mar 21, 2025
Merged

Read tracing API data lazily #289

merged 1 commit into from
Mar 21, 2025

Conversation

rm-openai
Copy link
Collaborator

@rm-openai rm-openai commented Mar 21, 2025

A common complaint is that people load their API keys using dotenv:

import agents # imports tracing by default

load_dotenv()

This causes issues, because by the time you load your dotenv, the batch processor has already read the API key.

Let's lazy load it, so it's deferred to when the processor actually needs the key.

Comment on lines 75 to 85
def _lazy_read_api_data_from_env(self):
if self._lazy_read_complete:
return

self._lazy_read_complete = True
if not self.api_key:
self.api_key = os.environ.get("OPENAI_API_KEY")
if not self.organization:
self.organization = os.environ.get("OPENAI_ORG_ID")
if not self.project:
self.project = os.environ.get("OPENAI_PROJECT_ID")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider using built-in functools.cached_property from python 3.8 rather than managing state yourself:

Suggested change
def _lazy_read_api_data_from_env(self):
if self._lazy_read_complete:
return
self._lazy_read_complete = True
if not self.api_key:
self.api_key = os.environ.get("OPENAI_API_KEY")
if not self.organization:
self.organization = os.environ.get("OPENAI_ORG_ID")
if not self.project:
self.project = os.environ.get("OPENAI_PROJECT_ID")
@cached_property
def api_key(self):
return self._api_key or os.environ.get("OPENAI_API_KEY")
@cached_property
def organization(self):
return self._organization or os.environ.get("OPENAI_ORG_ID")
@cached_property
def project(self):
return self._project or os.environ.get("OPENAI_PROJECT_ID")

@rm-openai rm-openai force-pushed the rm/pr289 branch 4 times, most recently from 2edd037 to fe0732e Compare March 21, 2025 19:27
@rm-openai rm-openai merged commit f4f0b85 into main Mar 21, 2025
10 checks passed
@rm-openai rm-openai deleted the rm/pr289 branch March 21, 2025 21:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants