Skip to content

Commit 8370ee1

Browse files
committed
Added openai image captioning
1 parent 8a48a43 commit 8370ee1

File tree

3 files changed

+28
-144
lines changed

3 files changed

+28
-144
lines changed

cmd/cli/elevenlabs.go_old

Lines changed: 0 additions & 143 deletions
This file was deleted.

cmd/cli/openai.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ func OpenAIRegister(cmd []Client, opts []client.ClientOpt, flags *Flags) ([]Clie
6262
{Name: "speak", Description: "Create speech from a prompt", Syntax: "(<voice>) <prompt>", MinArgs: 3, MaxArgs: 4, Fn: openaiSpeak(openai, flags)},
6363
{Name: "transcribe", Description: "Transcribe audio to text", Syntax: "<filename>", MinArgs: 3, MaxArgs: 3, Fn: openaiTranscribe(openai, flags)},
6464
{Name: "translate", Description: "Translate audio to English", Syntax: "<filename>", MinArgs: 3, MaxArgs: 3, Fn: openaiTranslate(openai, flags)},
65+
{Name: "caption", Description: "Provide a caption for an image", Syntax: "<filename>", MinArgs: 3, MaxArgs: 3, Fn: openaiCaption(openai, flags)},
6566
},
6667
})
6768

@@ -283,6 +284,32 @@ func openaiImages(client *openai.Client, flags *Flags) CommandFn {
283284
}
284285
}
285286

287+
func openaiCaption(client *openai.Client, flags *Flags) CommandFn {
288+
return func() error {
289+
url, err := url.Parse(flags.Arg(2))
290+
if err != nil {
291+
return err
292+
}
293+
message := openai.NewMessage("user", "Provide a short caption for this image")
294+
if url.Scheme == "" || url.Scheme == "file" {
295+
// TODO: Image needs to be uploaded first
296+
message.AppendImageFile(url.Path)
297+
} else {
298+
message.AppendImageUrl(url.String())
299+
}
300+
if response, err := client.Chat([]*openai.Message{message}, openai.OptModel("gpt-4-vision-preview")); err != nil {
301+
return err
302+
} else if len(response.Choices) == 0 {
303+
return errors.New("no response from OpenAI")
304+
} else if err := flags.Write(response.Choices[0].Message); err != nil {
305+
return err
306+
}
307+
308+
// Return success
309+
return nil
310+
}
311+
}
312+
286313
/////////////////////////////////////////////////////////////////////
287314
// PRIVATE METHODS
288315

pkg/openai/chat.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func (msg *Message) AppendImageFile(file ...string) *Message {
4545
for _, v := range file {
4646
msg.Content = append(msg.Content, MessageContent{
4747
Type: "image_file", ImageFile: &MessageContentImageFile{
48-
File: v,
48+
File: v, // TODO????
4949
},
5050
})
5151
}

0 commit comments

Comments
 (0)