* Copyright (c) 2024 Huawei Technologies Co., Ltd.
* openFuyao is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package tokenizer
import (
"context"
"fmt"
)
type FakeTokenizer struct {
InitializeFn func(ctx context.Context, req InitializeRequest) error
TokenizeFn func(ctx context.Context, req Request) (*TokenizationResult, error)
CompleteFn func(ctx context.Context, req CompleteRequest) (*TokenizationResult, error)
ChatCompleteFn func(ctx context.Context, req ChatCompleteRequest) (*TokenizationResult, error)
CloseFn func() error
}
func (f *FakeTokenizer) Close() error {
if f == nil {
return nil
}
if f.CloseFn != nil {
return f.CloseFn()
}
return nil
}
var _ Backend = (*FakeTokenizer)(nil)
func (f *FakeTokenizer) Initialize(ctx context.Context, req InitializeRequest) error {
if f.InitializeFn != nil {
return f.InitializeFn(ctx, req)
}
return fmt.Errorf("Initialize not configured")
}
func (f *FakeTokenizer) Tokenize(ctx context.Context, req Request) (*TokenizationResult, error) {
if f.TokenizeFn != nil {
return f.TokenizeFn(ctx, req)
}
return nil, fmt.Errorf("Tokenize not configured")
}
func (f *FakeTokenizer) Complete(ctx context.Context, req CompleteRequest) (*TokenizationResult, error) {
if f.CompleteFn != nil {
return f.CompleteFn(ctx, req)
}
return nil, fmt.Errorf("Complete not configured")
}
func (f *FakeTokenizer) ChatComplete(ctx context.Context, req ChatCompleteRequest) (*TokenizationResult, error) {
if f.ChatCompleteFn != nil {
return f.ChatCompleteFn(ctx, req)
}
return nil, fmt.Errorf("ChatComplete not configured")
}