MCPcopy
hub / github.com/HisMax/RedInk / _generate_via_chat_api

Method _generate_via_chat_api

backend/generators/image_api.py:146–188  ·  view source on GitHub ↗

通过 /v1/chat/completions 端点生成图片(如即梦 API)

(
        self,
        prompt: str,
        aspect_ratio: str,
        model: str,
        reference_image: Optional[bytes] = None,
        reference_images: Optional[List[bytes]] = None
    )

Source from the content-addressed store, hash-verified

144 return self.client.generate_via_images(payload)
145
146 def _generate_via_chat_api(
147 self,
148 prompt: str,
149 aspect_ratio: str,
150 model: str,
151 reference_image: Optional[bytes] = None,
152 reference_images: Optional[List[bytes]] = None
153 ) -> bytes:
154 """通过 /v1/chat/completions 端点生成图片(如即梦 API)"""
155 # 构建用户消息内容
156 user_content: Any = prompt
157
158 # 收集所有参考图片
159 all_reference_images = []
160 if reference_images and len(reference_images) > 0:
161 all_reference_images.extend(reference_images)
162 if reference_image and reference_image not in all_reference_images:
163 all_reference_images.append(reference_image)
164
165 # 如果有参考图片,构建多模态消息
166 if all_reference_images:
167 logger.debug(f" 添加 {len(all_reference_images)} 张参考图片到 chat 消息")
168 content_parts = [{"type": "text", "text": prompt}]
169
170 for idx, img_data in enumerate(all_reference_images):
171 compressed_img = compress_image(img_data, max_size_kb=200)
172 logger.debug(f" 参考图 {idx}: {len(img_data)} -> {len(compressed_img)} bytes")
173 base64_image = base64.b64encode(compressed_img).decode('utf-8')
174 content_parts.append({
175 "type": "image_url",
176 "image_url": {"url": f"data:image/png;base64,{base64_image}"}
177 })
178
179 user_content = content_parts
180
181 payload = {
182 "model": model,
183 "messages": [{"role": "user", "content": user_content}],
184 "max_tokens": 4096,
185 "temperature": 1.0
186 }
187
188 return self.client.generate_via_chat(payload)

Callers 1

generate_imageMethod · 0.95

Calls 2

compress_imageFunction · 0.85
generate_via_chatMethod · 0.80

Tested by

no test coverage detected