Error handle detokenization model mismatch
This commit is contained in:
parent
e3dd90102d
commit
0ef4db0e24
@ -449,9 +449,24 @@ type Model struct {
|
|||||||
c *C.struct_llama_model
|
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 {
|
func (m *Model) TokenToPiece(token int) string {
|
||||||
tokenLen := 12
|
tokenLen := 12
|
||||||
buf := make([]byte, tokenLen)
|
buf := make([]byte, tokenLen)
|
||||||
|
if token > m.NumVocab() {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
tokenLen = int(C.llama_token_to_piece(
|
tokenLen = int(C.llama_token_to_piece(
|
||||||
m.c,
|
m.c,
|
||||||
C.int32_t(token),
|
C.int32_t(token),
|
||||||
|
@ -634,9 +634,10 @@ func (s *Server) DetokenizeHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var text string
|
text, err := loadedModel.model.Detokenize(req.Tokens)
|
||||||
for _, token := range req.Tokens {
|
if err != nil {
|
||||||
text += loadedModel.model.TokenToPiece(token)
|
http.Error(w, fmt.Sprintf("failed to detokenize text: %v", err), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user