#pragma once #include "rust/cxx.h" #include namespace tabby { struct InferenceContext; typedef rust::Fn InferenceCallback; class TextInferenceEngine { public: virtual ~TextInferenceEngine(); virtual rust::Vec inference( rust::Box context, InferenceCallback callback, rust::Slice tokens, size_t max_decoding_length, float sampling_temperature ) const = 0; }; std::shared_ptr create_engine( rust::Str model_path, rust::Str model_type, rust::Str device, rust::Slice device_indices, size_t num_replicas_per_device ); } // namespace