diff --git a/openai.h b/openai.h index 97da354..112f9f9 100644 --- a/openai.h +++ b/openai.h @@ -37,7 +37,7 @@ #include <stdbool.h> #include <string.h> -char *openai_fetch_models() { return curl_get(models_api_url); } +char *openai_fetch_models() { return curl_get(get_models_api_url()); } bool openai_system(char *message_content) { chat_json("system", message_content); @@ -108,7 +108,7 @@ char *openai_chat(const char *user_role, const char *message_content) { char *json_data = chat_json(user_role, message_content); struct json_object *message_object = - openai_process_chat_message(completions_api_url, json_data); + openai_process_chat_message(get_completions_api_url(), json_data); if (message_object == NULL) { return NULL; @@ -128,7 +128,7 @@ char *openai_chat(const char *user_role, const char *message_content) { } char *tool_calls_result_str = chat_json(NULL, NULL); message_object = - openai_process_chat_message(completions_api_url, tool_calls_result_str); + openai_process_chat_message(get_completions_api_url(), tool_calls_result_str); if (message_object == NULL) { return NULL; } diff --git a/r.h b/r.h index b604ddb..cb58801 100644 --- a/r.h +++ b/r.h @@ -6,39 +6,45 @@ #include <string.h> bool is_verbose = true; -#ifndef RD -#ifndef OLLAMA char *models_api_url = "https://api.openai.com/v1/models"; -// char *completions_api_url = "https://ollama.molodetz.nl/v1/chat/completions"; char *completions_api_url = "https://api.openai.com/v1/chat/completions"; char *advanced_model = "gpt-4o-mini"; char *fast_model = "gpt-3.5-turbo"; -#endif -#endif -#ifdef RD - -char *models_api_url = "https://api.openai.com/v1/models"; -char *completions_api_url = "https://api.anthropic.com/v1/chat/completions"; -char *advanced_model = "claude-3-5-haiku-20241022"; +//char *models_api_url = "https://api.openai.com/v1/models"; +//char *completions_api_url = "https://api.anthropic.com/v1/chat/completions"; +//char *advanced_model = "claude-3-5-haiku-20241022"; //char *advanced_model = "meta-llama/Meta-Llama-3.1-8B-Instruct"; //char *advanced_model = "google/gemini-1.5-flash"; -char *fast_model = "claude-3-5-haiku-20241022"; +//char *fast_model = "claude-3-5-haiku-20241022"; -#endif -#ifdef OLLAMA -char *models_api_url = "https://ollama.molodetz.nl/v1/models"; -char *completions_api_url = "https://ollama.molodetz.nl/v1/chat/completions"; -char *advanced_model = "qwen2.5:3b"; +//#endif +//#ifdef OLLAMA +//char *models_api_url = "https://ollama.molodetz.nl/v1/models"; +//char *completions_api_url = "https://ollama.molodetz.nl/v1/chat/completions"; +//char *advanced_model = "qwen2.5:3b"; //char *advanced_model = "qwen2.5-coder:0.5b"; -char *fast_model = "qwen2.5:0.5b"; -#endif +//char *fast_model = "qwen2.5:0.5b"; +//#endif char *_model = NULL; #define DB_FILE "~/.r.db" #define PROMPT_TEMPERATURE 0.1 +char * get_completions_api_url() { + if(getenv("R_BASE_URL") != NULL) { + return joinpath(getenv("R_BASE_URL"), "v1/chat/completions"); + } + return completions_api_url; +} +char * get_models_api_url() { + if(getenv("R_BASE_URL") != NULL) { + return joinpath(getenv("R_BASE_URL"), "v1/models"); + } + return models_api_url; +} + void set_prompt_model(const char *model) { if (_model != NULL) { free(_model); @@ -47,6 +53,12 @@ void set_prompt_model(const char *model) { } const char *get_prompt_model() { + if(_model == NULL && getenv("R_MODEL") != NULL) { + _model = getenv("R_MODEL"); + } + if(_model){ + return _model; + } if (auth_type != AUTH_TYPE_API_KEY) { if (_model == NULL) { _model = strdup(fast_model); diff --git a/rpylib.so b/rpylib.so index 2f5f4ad..6db39fd 100755 Binary files a/rpylib.so and b/rpylib.so differ diff --git a/utils.h b/utils.h index 88f1cad..dd13041 100644 --- a/utils.h +++ b/utils.h @@ -90,6 +90,19 @@ unsigned long hash(const char *str) { return hash; } +char * joinpath(const char *base_url, const char *path) { + static char result[1024]; + result[0] = '\0'; + strcat(result, base_url); + if(base_url[strlen(base_url) - 1] != '/') { + strcat(result, "/"); + } + if(path[0] == '/') { + path++; + } + strcat(result, path); + return result; +} char *read_file(const char *path) { char *expanded_path = expand_home_directory(path);