mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
fix(xai-image): drop unreachable editing code path
The agent-facing image_generate tool only passes prompt + aspect_ratio to provider.generate() (see tools/image_generation_tool.py:953). The editing block (reference_images / edit_image kwargs) could never fire from the tool surface, and the xAI edits endpoint is /images/edits with a different payload shape anyway — not /images/generations as submitted. - Remove reference_images / edit_image kwargs handling from generate() - Remove matching test_with_reference_images case - Update docstring + plugin.yaml description to text-to-image only - Surface resolution in the success extras Follow-up to PR #14547. Tests: 18/18 pass.
This commit is contained in:
parent
a5e4a86ebe
commit
9599271180
3 changed files with 6 additions and 41 deletions
|
|
@ -5,7 +5,6 @@ Exposes xAI's ``grok-imagine-image`` model as an
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
- Text-to-image generation
|
- Text-to-image generation
|
||||||
- Image editing with reference images
|
|
||||||
- Multiple aspect ratios (1:1, 16:9, 9:16, etc.)
|
- Multiple aspect ratios (1:1, 16:9, 9:16, etc.)
|
||||||
- Multiple resolutions (1K, 2K)
|
- Multiple resolutions (1K, 2K)
|
||||||
- Base64 output saved to cache
|
- Base64 output saved to cache
|
||||||
|
|
@ -46,7 +45,7 @@ _MODELS: Dict[str, Dict[str, Any]] = {
|
||||||
"grok-imagine-image": {
|
"grok-imagine-image": {
|
||||||
"display": "Grok Imagine Image",
|
"display": "Grok Imagine Image",
|
||||||
"speed": "~5-10s",
|
"speed": "~5-10s",
|
||||||
"strengths": "Fast, high-quality, supports editing",
|
"strengths": "Fast, high-quality",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -180,10 +179,6 @@ class XAIImageGenProvider(ImageGenProvider):
|
||||||
resolution = _resolve_resolution()
|
resolution = _resolve_resolution()
|
||||||
xai_res = _XAI_RESOLUTIONS.get(resolution, "1024")
|
xai_res = _XAI_RESOLUTIONS.get(resolution, "1024")
|
||||||
|
|
||||||
# Check for editing mode (reference images)
|
|
||||||
reference_images = kwargs.get("reference_images", [])
|
|
||||||
edit_image = kwargs.get("edit_image")
|
|
||||||
|
|
||||||
payload: Dict[str, Any] = {
|
payload: Dict[str, Any] = {
|
||||||
"model": API_MODEL,
|
"model": API_MODEL,
|
||||||
"prompt": prompt,
|
"prompt": prompt,
|
||||||
|
|
@ -191,12 +186,6 @@ class XAIImageGenProvider(ImageGenProvider):
|
||||||
"resolution": xai_res,
|
"resolution": xai_res,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add editing parameters if present
|
|
||||||
if reference_images:
|
|
||||||
payload["reference_images"] = reference_images[:5]
|
|
||||||
if edit_image:
|
|
||||||
payload["image_url"] = edit_image
|
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
"Authorization": f"Bearer {api_key}",
|
"Authorization": f"Bearer {api_key}",
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
|
|
@ -300,9 +289,9 @@ class XAIImageGenProvider(ImageGenProvider):
|
||||||
aspect_ratio=aspect,
|
aspect_ratio=aspect,
|
||||||
)
|
)
|
||||||
|
|
||||||
extra: Dict[str, Any] = {}
|
extra: Dict[str, Any] = {
|
||||||
if reference_images:
|
"resolution": xai_res,
|
||||||
extra["reference_images"] = len(reference_images)
|
}
|
||||||
|
|
||||||
return success_response(
|
return success_response(
|
||||||
image=image_ref,
|
image=image_ref,
|
||||||
|
|
@ -310,7 +299,7 @@ class XAIImageGenProvider(ImageGenProvider):
|
||||||
prompt=prompt,
|
prompt=prompt,
|
||||||
aspect_ratio=aspect,
|
aspect_ratio=aspect,
|
||||||
provider="xai",
|
provider="xai",
|
||||||
extra=extra if extra else None,
|
extra=extra,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
name: xai
|
name: xai
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
description: "xAI image generation backend (grok-imagine-image). Supports text-to-image and editing."
|
description: "xAI image generation backend (grok-imagine-image). Text-to-image."
|
||||||
author: Julien Talbot
|
author: Julien Talbot
|
||||||
kind: backend
|
kind: backend
|
||||||
requires_env:
|
requires_env:
|
||||||
|
|
|
||||||
|
|
@ -199,30 +199,6 @@ class TestGenerate:
|
||||||
assert result["success"] is False
|
assert result["success"] is False
|
||||||
assert result["error_type"] == "empty_response"
|
assert result["error_type"] == "empty_response"
|
||||||
|
|
||||||
def test_with_reference_images(self):
|
|
||||||
from plugins.image_gen.xai import XAIImageGenProvider
|
|
||||||
|
|
||||||
mock_resp = MagicMock()
|
|
||||||
mock_resp.status_code = 200
|
|
||||||
mock_resp.raise_for_status = MagicMock()
|
|
||||||
mock_resp.json.return_value = {
|
|
||||||
"data": [{"url": "https://xai.image/edited.png"}],
|
|
||||||
}
|
|
||||||
|
|
||||||
with patch("plugins.image_gen.xai.requests.post", return_value=mock_resp) as mock_post:
|
|
||||||
provider = XAIImageGenProvider()
|
|
||||||
result = provider.generate(
|
|
||||||
prompt="Edit this image",
|
|
||||||
reference_images=["https://example.com/ref1.png", "https://example.com/ref2.png"],
|
|
||||||
)
|
|
||||||
|
|
||||||
assert result["success"] is True
|
|
||||||
# Check that reference_images was passed in payload
|
|
||||||
call_args = mock_post.call_args
|
|
||||||
payload = call_args.kwargs.get("json") or call_args[1].get("json")
|
|
||||||
assert "reference_images" in payload
|
|
||||||
assert len(payload["reference_images"]) == 2
|
|
||||||
|
|
||||||
def test_auth_header(self):
|
def test_auth_header(self):
|
||||||
from plugins.image_gen.xai import XAIImageGenProvider
|
from plugins.image_gen.xai import XAIImageGenProvider
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue