-
-
Notifications
You must be signed in to change notification settings - Fork 11.2k
docs(rust): add provider abstraction standards #33865
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,6 +2,25 @@ | |
|
|
||
| This file defines the rules for Rust work in LiteLLM. | ||
|
|
||
| ## Provider Coding Standards | ||
|
|
||
| Before writing new logic, look for an existing base to extend. When a change is | ||
| “the same behavior for one more provider/endpoint/integration”, the codebase | ||
| almost always already has a shared abstraction for it (for example, provider | ||
| `BaseConfig` transformation classes in `litellm/llms/base_llm/`, shared | ||
| helpers in `litellm_core_utils/`, typed request/response models, or factory | ||
| functions). Find it first with a search, then add the new variant by inheriting | ||
| from or composing that base, overriding only what genuinely differs (model | ||
| name, parameter mapping, or auth). | ||
|
|
||
| Never copy an existing implementation and edit it in place, and never hand-roll | ||
| a parallel version of logic a base already provides. If you catch yourself | ||
| writing a second copy of a pattern that exists twice already, stop and extract a | ||
| base instead: put the shared shape in one place and make both call sites thin | ||
| variants of it. The test for a good abstraction is that adding the next provider | ||
| is a few declarative lines, not a new file of duplicated flow. Only diverge from | ||
| the base when behavior is genuinely different, and say so explicitly in the PR. | ||
|
Comment on lines
+5
to
+22
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The guidance references |
||
|
|
||
| ## Crates (exactly three — see AGENTS.md) | ||
|
|
||
| `litellm-core` describes work; `litellm-ai-gateway` executes it; `litellm-python-bridge` | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "Coding standards" section added here is character-for-character identical to the "Provider Coding Standards" block added to
CLAUDE.md. If this guidance ever needs to change, both files must be updated in sync, and they will inevitably drift. Consider either keeping the canonical text in one file and having the other reference it (e.g., "See CLAUDE.md for provider coding standards"), or consolidating the two files so there is a single source of truth.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!