|
71 | 71 | this.Messages{end+1} = newMessage;
|
72 | 72 | end
|
73 | 73 |
|
74 |
| - function this = addUserMessageWithImages(this, prompt, images) |
| 74 | + function this = addUserMessageWithImages(this, prompt, images, nvp) |
75 | 75 | %addUserMessageWithImages Add user message with images.
|
76 | 76 |
|
77 | 77 | arguments
|
78 | 78 | this (1,1) openAIMessages
|
79 | 79 | prompt {mustBeNonzeroLengthTextScalar}
|
80 | 80 | images (1,:) cell {mustBeNonempty}
|
| 81 | + nvp.Detail {mustBeMember(nvp.Detail,["low","high","auto"])} = "auto" |
81 | 82 | end
|
82 | 83 |
|
83 | 84 | newMessage = struct("role", "user", "content", []);
|
|
87 | 88 | s = struct( ...
|
88 | 89 | "type","image_url", ...
|
89 | 90 | "image_url",struct("url",images{ii}));
|
90 |
| - newMessage.content{end+1} = s; |
91 | 91 | else
|
92 | 92 | [~,~,ext] = fileparts(images{ii});
|
93 | 93 | MIMEType = "data:image/" + erase(ext,".") + ";base64,";
|
|
99 | 99 | s = struct( ...
|
100 | 100 | "type","image_url", ...
|
101 | 101 | "image_url",struct("url",MIMEType + b64));
|
102 |
| - newMessage.content{end+1} = s; |
103 | 102 | end
|
| 103 | + if nvp.Detail ~= "auto" |
| 104 | + s.image_url.detail = nvp.Detail; |
| 105 | + end |
| 106 | + newMessage.content{end+1} = s; |
104 | 107 | this.Messages{end+1} = newMessage;
|
105 | 108 | end
|
106 | 109 |
|
|
0 commit comments