branch: elpa/gptel commit c7370f79b3f1fea95dbea988f648ce0368231221 Author: Karthik Chikmagalur <karthikchikmaga...@gmail.com> Commit: Karthik Chikmagalur <karthikchikmaga...@gmail.com>
gptel: Fix schema property preprocessing for Gemini * gptel.el (gptel--preprocess-schema): Add a :propertyOrdering field to objects in JSON schemas specifically for Gemini. Other backends seem to ignore this non-standard field, so we should be okay. For more information see URL https://ai.google.dev/gemini-api/docs/structured-output#property-ordering --- gptel.el | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gptel.el b/gptel.el index b6666540c5..72cf538ef7 100644 --- a/gptel.el +++ b/gptel.el @@ -1624,10 +1624,12 @@ Convert symbol :types to strings." (setcar (cdr tail) (symbol-name (cadr tail)))) (when (equal (cadr tail) "object") ;Add additional object fields (plist-put tail :additionalProperties :json-false) - (let ((props - (cl-loop for prop in (plist-get tail :properties) by #'cddr - collect (substring (symbol-name prop) 1)))) - (plist-put tail :required (vconcat props))))) + (let ((vprops (vconcat + (cl-loop + for prop in (plist-get tail :properties) by #'cddr + collect (substring (symbol-name prop) 1))))) + (plist-put tail :required vprops) + (plist-put tail :propertyOrdering vprops)))) (when (or (listp (cadr tail)) (vectorp (cadr tail))) (gptel--preprocess-schema (cadr tail))) (setq tail (cddr tail)))))