Quitada las claves API del codigo
This commit is contained in:
parent
d58f5c496a
commit
f20ee01e22
|
@ -9,6 +9,7 @@
|
||||||
*.user
|
*.user
|
||||||
*.userosscache
|
*.userosscache
|
||||||
*.sln.docstates
|
*.sln.docstates
|
||||||
|
appsettings.json
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
*.userprefs
|
*.userprefs
|
||||||
|
|
|
@ -32,5 +32,11 @@
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="appsettings.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
||||||
|
|
10
Program.cs
10
Program.cs
|
@ -13,7 +13,8 @@ namespace GTPCorrgir
|
||||||
{
|
{
|
||||||
OpenAI,
|
OpenAI,
|
||||||
Ollama,
|
Ollama,
|
||||||
Groq
|
Groq,
|
||||||
|
Grok // x.ai
|
||||||
}
|
}
|
||||||
public enum modoDeUso
|
public enum modoDeUso
|
||||||
{
|
{
|
||||||
|
@ -29,6 +30,7 @@ namespace GTPCorrgir
|
||||||
{
|
{
|
||||||
{ Opciones.LLM_a_Usar.Ollama, "Ollama" },
|
{ Opciones.LLM_a_Usar.Ollama, "Ollama" },
|
||||||
{ Opciones.LLM_a_Usar.Groq, "Groq" },
|
{ Opciones.LLM_a_Usar.Groq, "Groq" },
|
||||||
|
{ Opciones.LLM_a_Usar.Grok, "Grok" },
|
||||||
{ Opciones.LLM_a_Usar.OpenAI, "OpenAI" },
|
{ Opciones.LLM_a_Usar.OpenAI, "OpenAI" },
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -42,8 +44,8 @@ namespace GTPCorrgir
|
||||||
if (_instance == null)
|
if (_instance == null)
|
||||||
{
|
{
|
||||||
_instance = new Opciones();
|
_instance = new Opciones();
|
||||||
_instance.LLM = LLM_a_Usar.OpenAI;
|
_instance.LLM = LLM_a_Usar.Grok;
|
||||||
_instance.modo = modoDeUso.Corregir;
|
_instance.modo = modoDeUso.Chat;
|
||||||
}
|
}
|
||||||
return _instance;
|
return _instance;
|
||||||
}
|
}
|
||||||
|
@ -76,6 +78,8 @@ namespace GTPCorrgir
|
||||||
Opciones.Instance.LLM = Opciones.LLM_a_Usar.Ollama;
|
Opciones.Instance.LLM = Opciones.LLM_a_Usar.Ollama;
|
||||||
else if (arg.Contains("Groq"))
|
else if (arg.Contains("Groq"))
|
||||||
Opciones.Instance.LLM = Opciones.LLM_a_Usar.Groq;
|
Opciones.Instance.LLM = Opciones.LLM_a_Usar.Groq;
|
||||||
|
else if (arg.Contains("Grok"))
|
||||||
|
Opciones.Instance.LLM = Opciones.LLM_a_Usar.Grok;
|
||||||
else if (arg.Contains("OpenAI"))
|
else if (arg.Contains("OpenAI"))
|
||||||
Opciones.Instance.LLM = Opciones.LLM_a_Usar.OpenAI;
|
Opciones.Instance.LLM = Opciones.LLM_a_Usar.OpenAI;
|
||||||
|
|
||||||
|
|
124
gtpask.cs
124
gtpask.cs
|
@ -1,5 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
@ -14,11 +15,23 @@ using libObsidean;
|
||||||
|
|
||||||
namespace GTPCorrgir
|
namespace GTPCorrgir
|
||||||
{
|
{
|
||||||
|
public class ApiSettings
|
||||||
|
{
|
||||||
|
public class ApiKeySection
|
||||||
|
{
|
||||||
|
public string OpenAI { get; set; }
|
||||||
|
public string Groq { get; set; }
|
||||||
|
public string Grok { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public ApiKeySection ApiKeys { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class gtpask
|
public class gtpask
|
||||||
{
|
{
|
||||||
private readonly string openAiApiKey = "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";
|
private readonly string openAiApiKey;
|
||||||
private readonly string groqApiKey = "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";
|
private readonly string groqApiKey;
|
||||||
|
private readonly string grokApiKey;
|
||||||
public Logger Log = new Logger();
|
public Logger Log = new Logger();
|
||||||
private Dictionary<string, string> languageMap = new Dictionary<string, string>
|
private Dictionary<string, string> languageMap = new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
|
@ -35,6 +48,37 @@ namespace GTPCorrgir
|
||||||
public string TextodeSistema;
|
public string TextodeSistema;
|
||||||
private const bool Simulacion = false;
|
private const bool Simulacion = false;
|
||||||
|
|
||||||
|
public gtpask()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "appsettings.json");
|
||||||
|
if (File.Exists(configPath))
|
||||||
|
{
|
||||||
|
string jsonContent = File.ReadAllText(configPath);
|
||||||
|
var settings = JsonConvert.DeserializeObject<ApiSettings>(jsonContent);
|
||||||
|
|
||||||
|
openAiApiKey = settings.ApiKeys.OpenAI;
|
||||||
|
groqApiKey = settings.ApiKeys.Groq;
|
||||||
|
grokApiKey = settings.ApiKeys.Grok;
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(openAiApiKey) || string.IsNullOrEmpty(groqApiKey) || string.IsNullOrEmpty(grokApiKey))
|
||||||
|
{
|
||||||
|
Log.Log("Warning: One or more API keys are missing in the configuration file.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log.Log("Error: Configuration file (appsettings.json) not found.");
|
||||||
|
throw new FileNotFoundException("Configuration file (appsettings.json) not found.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.Log($"Error loading configuration: {ex.Message}");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private string CrearMensajeDeSistema()
|
private string CrearMensajeDeSistema()
|
||||||
{
|
{
|
||||||
|
@ -132,6 +176,7 @@ namespace GTPCorrgir
|
||||||
if (Opciones.Instance.LLM == Opciones.LLM_a_Usar.OpenAI) RespuestaLLM = await CallOpenAiApi(TextoACorregir);
|
if (Opciones.Instance.LLM == Opciones.LLM_a_Usar.OpenAI) RespuestaLLM = await CallOpenAiApi(TextoACorregir);
|
||||||
if (Opciones.Instance.LLM == Opciones.LLM_a_Usar.Ollama) RespuestaLLM = await CallOllamaApi(TextoACorregir);
|
if (Opciones.Instance.LLM == Opciones.LLM_a_Usar.Ollama) RespuestaLLM = await CallOllamaApi(TextoACorregir);
|
||||||
if (Opciones.Instance.LLM == Opciones.LLM_a_Usar.Groq) RespuestaLLM = await CallGroqAiApi(TextoACorregir);
|
if (Opciones.Instance.LLM == Opciones.LLM_a_Usar.Groq) RespuestaLLM = await CallGroqAiApi(TextoACorregir);
|
||||||
|
if (Opciones.Instance.LLM == Opciones.LLM_a_Usar.Grok) RespuestaLLM = await CallGrokApi(TextoACorregir);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
await Task.Delay(1000);
|
await Task.Delay(1000);
|
||||||
|
@ -235,6 +280,74 @@ namespace GTPCorrgir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private async Task<string> CallGrokApi(string input)
|
||||||
|
{
|
||||||
|
using var httpClient = new HttpClient();
|
||||||
|
string Mensaje_Sistema = CrearMensajeDeSistema();
|
||||||
|
string Mensaje_Usuario = CrearMensajeDeUsuario(input);
|
||||||
|
|
||||||
|
// Configurar headers
|
||||||
|
httpClient.DefaultRequestHeaders.Clear();
|
||||||
|
httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {grokApiKey}");
|
||||||
|
|
||||||
|
// Crear el objeto de solicitud siguiendo exactamente el formato del ejemplo curl
|
||||||
|
var requestData = new
|
||||||
|
{
|
||||||
|
messages = new[]
|
||||||
|
{
|
||||||
|
new { role = "system", content = Mensaje_Sistema },
|
||||||
|
new { role = "user", content = Mensaje_Usuario }
|
||||||
|
},
|
||||||
|
model = "grok-beta",
|
||||||
|
stream = false,
|
||||||
|
temperature = 0
|
||||||
|
};
|
||||||
|
|
||||||
|
var content = new StringContent(
|
||||||
|
JsonConvert.SerializeObject(requestData),
|
||||||
|
Encoding.UTF8,
|
||||||
|
"application/json"
|
||||||
|
);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.Log("Ask Grok: " + JsonConvert.SerializeObject(requestData));
|
||||||
|
|
||||||
|
// URL corregida para coincidir con el ejemplo
|
||||||
|
var response = await httpClient.PostAsync("https://api.x.ai/v1/chat/completions", content);
|
||||||
|
response.EnsureSuccessStatusCode();
|
||||||
|
|
||||||
|
var jsonResponse = await response.Content.ReadAsStringAsync();
|
||||||
|
Log.Log("Grok Response: " + jsonResponse); // Logging la respuesta para debug
|
||||||
|
|
||||||
|
dynamic data = JsonConvert.DeserializeObject(jsonResponse);
|
||||||
|
return data.choices[0].message.content;
|
||||||
|
}
|
||||||
|
catch (HttpRequestException e)
|
||||||
|
{
|
||||||
|
Log.Log($"Error en la solicitud HTTP: {e.Message}");
|
||||||
|
Console.WriteLine($"Error making HTTP request: {e.Message}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
catch (JsonException e)
|
||||||
|
{
|
||||||
|
Log.Log($"Error al procesar JSON: {e.Message}");
|
||||||
|
Console.WriteLine($"Error processing JSON response: {e.Message}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Log.Log($"Error general: {e.Message}");
|
||||||
|
Console.WriteLine($"An error occurred: {e.Message}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
httpClient?.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private async Task<string> CallOllamaApi(string input)
|
private async Task<string> CallOllamaApi(string input)
|
||||||
{
|
{
|
||||||
var httpClient = new HttpClient();
|
var httpClient = new HttpClient();
|
||||||
|
@ -245,7 +358,7 @@ namespace GTPCorrgir
|
||||||
|
|
||||||
var requestData = new
|
var requestData = new
|
||||||
{
|
{
|
||||||
model = "phi3", //"llama3",
|
model = "llama3.2:latest", // "phi3", //"llama3",
|
||||||
messages = new[]
|
messages = new[]
|
||||||
{
|
{
|
||||||
new { role = "system", content = Mensaje_Sistema },
|
new { role = "system", content = Mensaje_Sistema },
|
||||||
|
@ -294,7 +407,7 @@ namespace GTPCorrgir
|
||||||
|
|
||||||
var requestData = new
|
var requestData = new
|
||||||
{
|
{
|
||||||
model = "gpt-4",
|
model = "gpt-4o-mini", //"gpt -4",
|
||||||
messages = new[]
|
messages = new[]
|
||||||
{
|
{
|
||||||
new { role = "system", content = Mensaje_Sistema },
|
new { role = "system", content = Mensaje_Sistema },
|
||||||
|
@ -326,6 +439,7 @@ namespace GTPCorrgir
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<string> CallGroqAiApi(string input)
|
private async Task<string> CallGroqAiApi(string input)
|
||||||
{
|
{
|
||||||
var httpClient = new HttpClient();
|
var httpClient = new HttpClient();
|
||||||
|
@ -336,7 +450,7 @@ namespace GTPCorrgir
|
||||||
|
|
||||||
var requestData = new
|
var requestData = new
|
||||||
{
|
{
|
||||||
model = "llama3-70b-8192",
|
model = "llama-3.1-70b-versatile", // "llama3-70b-8192",
|
||||||
messages = new[]
|
messages = new[]
|
||||||
{
|
{
|
||||||
new { role = "system", content = Mensaje_Sistema },
|
new { role = "system", content = Mensaje_Sistema },
|
||||||
|
|
Loading…
Reference in New Issue