Error handle detokenization model mismatch

This commit is contained in:
ParthSareen 2024-12-18 17:39:13 -08:00
parent e3dd90102d
commit 0ef4db0e24
2 changed files with 19 additions and 3 deletions

View File

@ -449,9 +449,24 @@ type Model struct {
c *C.struct_llama_model
}
func (m *Model) Detokenize(tokens []int) (string, error) {
var text string
for _, token := range tokens {
piece := m.TokenToPiece(token)
if piece == "" {
return "", fmt.Errorf("failed to convert token %d to piece", token)
}
text += piece
}
return text, nil
}
func (m *Model) TokenToPiece(token int) string {
tokenLen := 12
buf := make([]byte, tokenLen)
if token > m.NumVocab() {
return ""
}
tokenLen = int(C.llama_token_to_piece(
m.c,
C.int32_t(token),

View File

@ -634,9 +634,10 @@ func (s *Server) DetokenizeHandler(w http.ResponseWriter, r *http.Request) {
return
}
var text string
for _, token := range req.Tokens {
text += loadedModel.model.TokenToPiece(token)
text, err := loadedModel.model.Detokenize(req.Tokens)
if err != nil {
http.Error(w, fmt.Sprintf("failed to detokenize text: %v", err), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")