Spaces:
Sleeping
Sleeping
Update main.py
Browse files
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:
|
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:
|
146 |
-
new_props = {"
|
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"
|
155 |
-
result["
|
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:
|