embd-input : fix returning ptr to temporary

This commit is contained in:
Georgi Gerganov 2023-07-01 18:46:00 +03:00
parent 04606a1599
commit 79f634a19d
No known key found for this signature in database
GPG key ID: 449E073F9DC10735
2 changed files with 7 additions and 6 deletions

View file

@ -210,9 +210,12 @@ llama_token sampling_id(struct MyModel* mymodel) {
const char * sampling(struct MyModel * mymodel) { const char * sampling(struct MyModel * mymodel) {
llama_context * ctx = mymodel->ctx; llama_context * ctx = mymodel->ctx;
int id = sampling_id(mymodel); int id = sampling_id(mymodel);
std::string ret; static std::string ret;
if (id == llama_token_eos()) ret = "</s>"; if (id == llama_token_eos()) {
else ret = llama_token_to_str(ctx, id); ret = "</s>";
} else {
ret = llama_token_to_str(ctx, id);
}
eval_id(mymodel, id); eval_id(mymodel, id);
return ret.c_str(); return ret.c_str();
} }

View file

@ -5,7 +5,6 @@
#include "llama.h" #include "llama.h"
#include "build-info.h" #include "build-info.h"
extern "C" { extern "C" {
typedef struct MyModel { typedef struct MyModel {
@ -14,14 +13,13 @@ typedef struct MyModel {
int n_past = 0; int n_past = 0;
} MyModel; } MyModel;
struct MyModel* create_mymodel(int argc, char ** argv); struct MyModel* create_mymodel(int argc, char ** argv);
bool eval_float(void* model, float* input, int N); bool eval_float(void* model, float* input, int N);
bool eval_tokens(void* model, std::vector<llama_token> tokens); bool eval_tokens(void* model, std::vector<llama_token> tokens);
bool eval_id(struct MyModel* mymodel, int id); bool eval_id(struct MyModel* mymodel, int id);
bool eval_string(struct MyModel* mymodel, const char* str); 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); llama_token sampling_id(struct MyModel* mymodel);
void free_mymodel(struct MyModel* mymodel); void free_mymodel(struct MyModel* mymodel);