Change initializer apiKey parameter to be a token provider closure#6
Merged
Change initializer apiKey parameter to be a token provider closure#6
apiKey parameter to be a token provider closure#6Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR refactors the API key handling in AnthropicLanguageModel and OpenAILanguageModel to use closure-based token providers instead of static strings. By leveraging @autoclosure, existing code passing string literals continues to work unchanged, while new use cases can dynamically provide credentials (e.g., through OAuth managers).
Key Changes:
- Replaced
apiKey: Stringparameters with@autoclosureclosures that returnString - Made token providers private and invoked them at request time rather than initialization
- Removed cached headers in
AnthropicLanguageModel, rebuilding them per-request to use fresh tokens
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
Sources/AnyLanguageModel/Models/OpenAILanguageModel.swift |
Changed apiKey to a closure-based tokenProvider, updated all authorization headers to invoke the provider |
Sources/AnyLanguageModel/Models/AnthropicLanguageModel.swift |
Changed apiKey to a closure-based tokenProvider, removed cached headers field, and rebuilt headers per-request |
Tests/AnyLanguageModelTests/OpenAILanguageModelTests.swift |
Removed test assertion for apiKey property since it's now private |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR updates the initializers for
AnthropicLanguageModelandOpenAILanguageModelto accept closures for theapiKeyparameter. By using@autoclosure, we can maintain the existing usage providingStringarguments (such asProcessInfo.processInfo.environment["ANTHROPIC_API_KEY"].Making this a closure allows callers to dynamically inject credentials, such as with an OAuth manager.