MatteoScript commited on
Commit
ca240c1
·
verified ·
1 Parent(s): ae6b74a

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +12 -5
main.py CHANGED
@@ -99,14 +99,19 @@ def convert_openai_schema_for_gemini(tools_schema):
99
  converted_properties = {}
100
  for prop_name, prop_value in params["properties"].items():
101
  cleaned = clean_schema_property(prop_value)
102
- if cleaned: # Aggiungi solo se il dizionario non è vuoto
103
  converted_properties[prop_name] = cleaned
104
  if converted_properties:
105
  converted_params["properties"] = converted_properties
 
 
 
 
106
  if "required" in params:
107
  converted_params["required"] = params["required"]
108
  converted_tool["function"]["parameters"] = converted_params
109
  converted_schema.append(converted_tool)
 
110
  return converted_schema
111
 
112
  def clean_schema_property(prop):
@@ -142,8 +147,8 @@ def clean_schema_property(prop):
142
  cleaned_prop = clean_schema_property(prop_value)
143
  if cleaned_prop:
144
  new_props[prop_name] = cleaned_prop
145
- if not new_props: # Se vuoto, sostituisci con dummy
146
- new_props = {"dummy": {"type": "string"}}
147
  result[key] = new_props
148
  elif key == "items" and isinstance(value, dict):
149
  result[key] = clean_schema_property(value)
@@ -151,10 +156,11 @@ def clean_schema_property(prop):
151
  result[key] = [clean_schema_property(item) if isinstance(item, dict) else item for item in value]
152
  else:
153
  result[key] = value
154
- if "type" not in result and "properties" in result and result["properties"]:
155
- result["type"] = "object"
156
  return result
157
 
 
158
  def convert_payload_for_gemini(payload: ChatCompletionRequest):
159
  if hasattr(payload, "model_dump"):
160
  payload_converted = json.loads(payload.model_dump_json())
@@ -225,6 +231,7 @@ async def health_check():
225
  @app.post("/v1/chat/completions", dependencies=[Depends(verify_api_key)])
226
  async def chat_completions(req: ChatCompletionRequest):
227
  try:
 
228
  if not req.messages:
229
  raise HTTPException(status_code=400, detail="Nessun messaggio fornito")
230
  if not req.stream:
 
99
  converted_properties = {}
100
  for prop_name, prop_value in params["properties"].items():
101
  cleaned = clean_schema_property(prop_value)
102
+ if cleaned:
103
  converted_properties[prop_name] = cleaned
104
  if converted_properties:
105
  converted_params["properties"] = converted_properties
106
+ else:
107
+ converted_params["properties"] = {"parameter": {"type": "string"}}
108
+ else:
109
+ converted_params["properties"] = {"parameter": {"type": "string"}}
110
  if "required" in params:
111
  converted_params["required"] = params["required"]
112
  converted_tool["function"]["parameters"] = converted_params
113
  converted_schema.append(converted_tool)
114
+ print(converted_schema)
115
  return converted_schema
116
 
117
  def clean_schema_property(prop):
 
147
  cleaned_prop = clean_schema_property(prop_value)
148
  if cleaned_prop:
149
  new_props[prop_name] = cleaned_prop
150
+ if not new_props:
151
+ new_props = {"parameter": {"type": "string"}}
152
  result[key] = new_props
153
  elif key == "items" and isinstance(value, dict):
154
  result[key] = clean_schema_property(value)
 
156
  result[key] = [clean_schema_property(item) if isinstance(item, dict) else item for item in value]
157
  else:
158
  result[key] = value
159
+ if result.get("type") == "object" and ("properties" not in result or not result["properties"]):
160
+ result["properties"] = {"parameter": {"type": "string"}}
161
  return result
162
 
163
+
164
  def convert_payload_for_gemini(payload: ChatCompletionRequest):
165
  if hasattr(payload, "model_dump"):
166
  payload_converted = json.loads(payload.model_dump_json())
 
231
  @app.post("/v1/chat/completions", dependencies=[Depends(verify_api_key)])
232
  async def chat_completions(req: ChatCompletionRequest):
233
  try:
234
+ print(req)
235
  if not req.messages:
236
  raise HTTPException(status_code=400, detail="Nessun messaggio fornito")
237
  if not req.stream: