XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Implement bucket attachments support in Copilot provider

Co-authored-by: hlohaus <983577+hlohaus@users.noreply.github.com>

fa0e37cf
copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
提交于

代码差异

1 个文件 +8 -4
Modified g4f/Provider/Copilot.py +8 -4
@@ -20,7 +20,7 @@ except ImportError:
20 20 has_nodriver = False
21 21
22 22 from .base_provider import AsyncAuthedProvider, ProviderModelMixin
23 from .helper import format_prompt_max_length
23 from .helper import format_prompt_max_length, render_messages
24 24 from .openai.har_file import get_headers, get_har_files
25 25 from ..typing import AsyncResult, Messages, MediaListType
26 26 from ..errors import MissingRequirementsError, NoValidHarFileError, MissingAuthError
@@ -140,24 +140,28 @@ class Copilot(AsyncAuthedProvider, ProviderModelMixin):
140 140 cls._access_token = None
141 141 else:
142 142 debug.log(f"Copilot: User: {user}")
143 # Process messages to include bucket content once
144 rendered_messages = list(render_messages(messages))
145
143 146 if conversation is None:
144 147 response = await session.post(cls.conversation_url)
145 148 response.raise_for_status()
146 149 conversation_id = response.json().get("id")
147 150 conversation = Conversation(conversation_id)
148 151 if prompt is None:
149 prompt = format_prompt_max_length(messages, 10000)
152 prompt = format_prompt_max_length(rendered_messages, 10000)
150 153 debug.log(f"Copilot: Created conversation: {conversation_id}")
151 154 else:
152 155 conversation_id = conversation.conversation_id
153 156 if prompt is None:
154 prompt = get_last_user_message(messages)
157 prompt = get_last_user_message(rendered_messages)
155 158 debug.log(f"Copilot: Use conversation: {conversation_id}")
156 159 if return_conversation:
157 160 yield conversation
158 161
159 162 uploaded_images = []
160 for media, _ in merge_media(media, messages):
163 # Use rendered messages for media processing to ensure consistency
164 for media, _ in merge_media(media, rendered_messages):
161 165 if not isinstance(media, str):
162 166 data = to_bytes(media)
163 167 response = await session.post(