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; } }