@@ -50,7 +50,7 @@ describe("KurtOpenAI generateNaturalLanguage", () => {
5050 )
5151 } )
5252
53- test ( "describes a base64-encoded image" , async ( ) => {
53+ test ( "describes a base64-encoded image (imageData) " , async ( ) => {
5454 const result = await snapshotAndMock ( "gpt-4o-2024-05-13" , ( kurt ) =>
5555 kurt . generateNaturalLanguage ( {
5656 prompt : "Describe this emoji, in two words." ,
@@ -68,4 +68,48 @@ describe("KurtOpenAI generateNaturalLanguage", () => {
6868 )
6969 expect ( result . text ) . toEqual ( "Heart eyes" )
7070 } )
71+
72+ test ( "describes a base64-encoded image (inlineData)" , async ( ) => {
73+ const result = await snapshotAndMock ( "gpt-4o-2024-05-13" , ( kurt ) =>
74+ kurt . generateNaturalLanguage ( {
75+ prompt : "Describe this emoji, in two words." ,
76+ extraMessages : [
77+ {
78+ role : "user" ,
79+ inlineData : {
80+ mimeType : "image/png" ,
81+ base64Data :
82+ "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAApgAAAKYB3X3/OAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAANCSURBVEiJtZZPbBtFFMZ/M7ubXdtdb1xSFyeilBapySVU8h8OoFaooFSqiihIVIpQBKci6KEg9Q6H9kovIHoCIVQJJCKE1ENFjnAgcaSGC6rEnxBwA04Tx43t2FnvDAfjkNibxgHxnWb2e/u992bee7tCa00YFsffekFY+nUzFtjW0LrvjRXrCDIAaPLlW0nHL0SsZtVoaF98mLrx3pdhOqLtYPHChahZcYYO7KvPFxvRl5XPp1sN3adWiD1ZAqD6XYK1b/dvE5IWryTt2udLFedwc1+9kLp+vbbpoDh+6TklxBeAi9TL0taeWpdmZzQDry0AcO+jQ12RyohqqoYoo8RDwJrU+qXkjWtfi8Xxt58BdQuwQs9qC/afLwCw8tnQbqYAPsgxE1S6F3EAIXux2oQFKm0ihMsOF71dHYx+f3NND68ghCu1YIoePPQN1pGRABkJ6Bus96CutRZMydTl+TvuiRW1m3n0eDl0vRPcEysqdXn+jsQPsrHMquGeXEaY4Yk4wxWcY5V/9scqOMOVUFthatyTy8QyqwZ+kDURKoMWxNKr2EeqVKcTNOajqKoBgOE28U4tdQl5p5bwCw7BWquaZSzAPlwjlithJtp3pTImSqQRrb2Z8PHGigD4RZuNX6JYj6wj7O4TFLbCO/Mn/m8R+h6rYSUb3ekokRY6f/YukArN979jcW+V/S8g0eT/N3VN3kTqWbQ428m9/8k0P/1aIhF36PccEl6EhOcAUCrXKZXXWS3XKd2vc/TRBG9O5ELC17MmWubD2nKhUKZa26Ba2+D3P+4/MNCFwg59oWVeYhkzgN/JDR8deKBoD7Y+ljEjGZ0sosXVTvbc6RHirr2reNy1OXd6pJsQ+gqjk8VWFYmHrwBzW/n+uMPFiRwHB2I7ih8ciHFxIkd/3Omk5tCDV1t+2nNu5sxxpDFNx+huNhVT3/zMDz8usXC3ddaHBj1GHj/As08fwTS7Kt1HBTmyN29vdwAw+/wbwLVOJ3uAD1wi/dUH7Qei66PfyuRj4Ik9is+hglfbkbfR3cnZm7chlUWLdwmprtCohX4HUtlOcQjLYCu+fzGJH2QRKvP3UNz8bWk1qMxjGTOMThZ3kvgLI5AzFfo379UAAAAASUVORK5CYII=" ,
83+ } ,
84+ } ,
85+ ] ,
86+ } )
87+ )
88+ expect ( result . text ) . toEqual ( "Heart eyes" )
89+ } )
90+
91+ test ( "throws an error when a message includes inline audio data" , async ( ) => {
92+ await snapshotAndMockWithError (
93+ "gpt-4o-2024-05-13" ,
94+ ( kurt ) =>
95+ kurt . generateNaturalLanguage ( {
96+ prompt : "Transcribe this audio file." ,
97+ extraMessages : [
98+ {
99+ role : "user" ,
100+ inlineData : {
101+ mimeType : "audio/mpeg" ,
102+ base64Data : "DUMMYDATA" ,
103+ } ,
104+ } ,
105+ ] ,
106+ } ) ,
107+ ( errorAny ) => {
108+ expect ( errorAny ) . toBeInstanceOf ( Error )
109+ expect ( errorAny . message ) . toEqual (
110+ "Unsupported image MIME type: audio/mpeg"
111+ )
112+ }
113+ )
114+ } )
71115} )
0 commit comments