const char * sampling(struct MyModel * mymodel) {
llama_context * ctx = mymodel->ctx;
int id = sampling_id(mymodel);
- std::string ret;
- if (id == llama_token_eos()) ret = "</s>";
- else ret = llama_token_to_str(ctx, id);
+ static std::string ret;
+ if (id == llama_token_eos()) {
+ ret = "</s>";
+ } else {
+ ret = llama_token_to_str(ctx, id);
+ }
eval_id(mymodel, id);
return ret.c_str();
}
#include "llama.h"
#include "build-info.h"
-
extern "C" {
typedef struct MyModel {
int n_past = 0;
} MyModel;
-
struct MyModel* create_mymodel(int argc, char ** argv);
bool eval_float(void* model, float* input, int N);
bool eval_tokens(void* model, std::vector<llama_token> tokens);
bool eval_id(struct MyModel* mymodel, int id);
bool eval_string(struct MyModel* mymodel, const char* str);
-const char* sampling(struct MyModel* mymodel);
+const char * sampling(struct MyModel* mymodel);
llama_token sampling_id(struct MyModel* mymodel);
void free_mymodel(struct MyModel* mymodel);