|
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