feat: Add token counting functionality to vision-related functions

- Add function `CountVisionImageToken` to count vision image tokens
- Modify function `imageSize` to handle different image types
- Add function `countVisonTokenMessages` to count tokens in vision messages
- Add logic to count tokens for different types of vision messages in `countVisonTokenMessages`
- Add tokens for role and name in `countVisonTokenMessages`
- Update total token count calculation in `countVisonTokenMessages` to include image tokens and message tokens
- Add constant values for tokens per message and tokens per name in `countVisonTokenMessages`
- Modify the error message on line 12 to include the JSON string that failed to unmarshal
This commit is contained in:
Laisky.Cai
2023-11-17 04:00:49 +00:00
parent d0c0b9b650
commit 08ca72184a
3 changed files with 115 additions and 8 deletions

View File

@@ -105,7 +105,7 @@ func (r *GeneralOpenAIRequest) TextMessages() (messages []Message, err error) {
if blob, err := json.Marshal(r.Messages); err != nil {
return nil, errors.Wrap(err, "marshal messages failed")
} else if err := json.Unmarshal(blob, &messages); err != nil {
return nil, errors.Wrap(err, "unmarshal messages failed")
return nil, errors.Wrapf(err, "unmarshal messages failed %q", string(blob))
} else {
return messages, nil
}