Add support for OpenAI-compatible APIs via OpenAIGenericAPIModel#5
Open
Leopc1977 wants to merge 11 commits into
Open
Add support for OpenAI-compatible APIs via OpenAIGenericAPIModel#5Leopc1977 wants to merge 11 commits into
Leopc1977 wants to merge 11 commits into
Conversation
Update model initialization and API handling in model_generation_http.py.
…l parser Improve error logging in model_generation_http.py.
… instead of 'self_hosted'. Update model options to include 'image_support' flag in model_generation_http.py for better configuration management.
… error handling for non-local models. Remove unnecessary print statement in response handling.
…dpoint and image input validation. Add 'max_tokens' option to model request parameters for better configuration.
…d update example usage. Adjust image support default value in OpenAIGenericAPIModel.
…initial demo version (no logic changes)
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
paulsgh
added a commit
to taso-labs/game_arena
that referenced
this pull request
Mar 10, 2026
Cherry-picked from upstream PR google-deepmind#5. Adds OpenAIGenericAPIModel class that enables using any OpenAI-compatible API endpoint (vLLM, LM Studio, local models, etc.) with Game Arena. Includes streaming support, multimodal input, and a chess demo script. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Merged
6 tasks
paulsgh
added a commit
to taso-labs/game_arena
that referenced
this pull request
Mar 11, 2026
…) (#14) * feat: merge upstream poker refactor with conflict resolution Cherry-picked from resolve-pr-12 (PR #13) — Matan's conflict resolution of Google DeepMind's poker refactor. - Games reorganized into game_arena/harness/games/{chess,go,poker,connect_four,tic_tac_toe}/ - New poker game support added - Updated model registry, telemetry, game state renderer - Conflicts resolved favoring upstream patterns - FreeCiv integration and GitHub workflows preserved Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: Sanitize sensitive data in logging to address CodeQL alerts Add _sanitize_request_for_logging() to redact Authorization headers Co-authored-by: Matan <matanhalevy@users.noreply.github.com> * fix: sanitize headers in _post_request_async to resolve CodeQL alerts Break taint flow from headers parameter by copying through a sanitize function and using logging instead of print for request lifecycle messages. Resolves 4 remaining py/clear-text-logging-sensitive-data alerts on lines 626, 631, 641, 644. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add OpenAIGenericAPIModel for any OpenAI-compatible API Cherry-picked from upstream PR google-deepmind#5. Adds OpenAIGenericAPIModel class that enables using any OpenAI-compatible API endpoint (vLLM, LM Studio, local models, etc.) with Game Arena. Includes streaming support, multimodal input, and a chess demo script. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: resolve merge conflicts between fork and upstream prompts/templates - Re-add PromptTemplate enum to prompt_templates.py for backward compat with fork's FreeCiv code and demo scripts - Merge upstream prompts.py constants (CORE_PROMPTS, RETHINK_PROMPTS, IMAGE_TEXT_PROMPTS) into prompts/__init__.py to resolve module shadowing - Remove standalone prompts.py (shadowed by prompts/ package) - Fix tournament_util references in OpenAIGenericAPIModel (PR #5) to use model_generation (renamed in upstream poker refactor) - Add frozendict to dependencies (required by chess sprite_utils) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address code review — sanitize logging, fix ternary precedence BLOCKER fixes: - Sanitize request/headers in OpenAIGenericAPIModel._post_request error path using _sanitize_request_for_logging and logging instead of print - Use _sanitize_request_for_logging(request) for request_for_logging in _generate and _generate_streaming returns, and in warning logs MAJOR fixes: - Rename _sanitize_headers_for_request to _copy_headers with accurate docstring (it copies, not sanitizes) - Fix operator precedence bug in main_response_and_thoughts ternary: `else ""` dropped full_content when reasoning was empty, now correctly falls back to `else full_content` MINOR fixes: - Fix double space typo in error message - Use logging instead of print for error output consistency Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Matan <matanhalevy@users.noreply.github.com>
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.
Summary
This PR introduces
OpenAIGenericAPIModel, enabling the use of any OpenAI-compatible API endpoint (local or remote) within Game Arena.Changes
README.md
OpenAIGenericAPIModelusage with local or remote endpoints.game_arena/harness/model_generation_http.py
OpenAIGenericAPIModel, a generic wrapper around any OpenAI-compatible API endpoint.api_endpoint(HTTP/HTTPS).game_arena/harness/harness_demo_openai_generic.py
harness_demo, but usingOpenAIGenericAPIModel.Motivation
This makes it possible to integrate any OpenAI-compatible API into Game Arena without needing special integration code.
For example:
Example Usage