Fix token_to_piece implementation in Swift
This commit is contained in:
parent
1d144112c0
commit
67d2bd2466
2 changed files with 22 additions and 1 deletions
|
@ -242,6 +242,16 @@ private func token_to_piece(token: llama_token, buffer: inout [CChar]) -> String
|
||||||
Int32(result.count)
|
Int32(result.count)
|
||||||
)
|
)
|
||||||
assert(check == nTokens)
|
assert(check == nTokens)
|
||||||
|
} else if nTokens > 8 {
|
||||||
|
result.removeAll()
|
||||||
|
result = [CChar](repeating: 0, count: nTokens)
|
||||||
|
let check = llama_token_to_piece(
|
||||||
|
model,
|
||||||
|
token,
|
||||||
|
&result,
|
||||||
|
Int32(result.count)
|
||||||
|
)
|
||||||
|
assert(check == nTokens)
|
||||||
} else {
|
} else {
|
||||||
result.removeLast(result.count - Int(nTokens))
|
result.removeLast(result.count - Int(nTokens))
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,7 +165,18 @@ actor LlamaContext {
|
||||||
let result = UnsafeMutablePointer<Int8>.allocate(capacity: 8)
|
let result = UnsafeMutablePointer<Int8>.allocate(capacity: 8)
|
||||||
result.initialize(repeating: Int8(0), count: 8)
|
result.initialize(repeating: Int8(0), count: 8)
|
||||||
|
|
||||||
let _ = llama_token_to_piece(model, token, result, 8)
|
let nTokens = llama_token_to_piece(model, token, result, 8)
|
||||||
|
|
||||||
|
if nTokens > 8 {
|
||||||
|
result.removeAll()
|
||||||
|
result = [CChar](repeating: 0, count: nTokens)
|
||||||
|
_ = llama_token_to_piece(
|
||||||
|
model,
|
||||||
|
token,
|
||||||
|
&result,
|
||||||
|
Int32(result.count)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
let resultStr = String(cString: result)
|
let resultStr = String(cString: result)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue