using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; public class OpenAIEmbeddingService { private readonly string _apiKey = "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"; private readonly HttpClient _httpClient; public OpenAIEmbeddingService() { _httpClient = new HttpClient(); _httpClient.DefaultRequestHeaders.Clear(); _httpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {_apiKey}"); } public async Task GenerateEmbeddingAsync(string text) { var url = "https://api.openai.com/v1/embeddings"; var payload = new { //model = "text-embedding-3-small", model = "text-embedding-ada-002", input = text }; var content = new StringContent(JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync(url, content); if (response.IsSuccessStatusCode) { var responseContent = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject(responseContent); return result.Data[0].Embedding; } else { throw new Exception($"Failed to generate embedding: {response.StatusCode}"); } } } public class OpenAIEmbeddingResponse { public EmbeddingData[] Data { get; set; } } public class EmbeddingData { public float[] Embedding { get; set; } }