Spaces:
Running
Running
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:
|