GPT-4o İle Çeviri | C#
Merhaba GPT-4o modelini kullanarak çeviri yapabilir miyim diye biraz araştırdım.
Elimde Türkçe açıklamaları olan araç parça listesi vardı.
Bunu 5 farklı dile çevirmem gerekiyordu.
İlk etapta hesabıma 5 dolarlık bir yükleme yaptım ve çeviri yapmayı başardım.
Açıkçası çevirdi çevirmesine ama ben DeepL Çeviri‘yi daha başarılı buldum.
static async Task gptIleCevir()
{
string apiKey = "aq-trye-jdueryassjdh7kasjoıqw0jljasd012nklsadkj89as";
string apiUrl = "https://api.openai.com/v1/chat/completions";
Console.WriteLine("Lütfen bir dosya yolu giriniz:");
string dosyaYolu = Console.ReadLine();
if (File.Exists(dosyaYolu))
{
Console.WriteLine("Dosya bulundu: " + dosyaYolu);
// Dosyayi bir listeye atiyorum. Listede malzeme numarası ve Turkce aciklama var.
// Ama Almanca, Fransizca, Hollandaca, Rusca ve Ingilizce eksik
List<MalzemeAciklama> lstMalzeme = ExcelIslemleri.Excel2List(dosyaYolu);
try
{
foreach (MalzemeAciklama objMalzemeAciklama in lstMalzeme.Where(objMalzemeAciklama => string.IsNullOrEmpty(objMalzemeAciklama.UzunAciklamaDE)))
{
string ifade = objMalzemeAciklama.UzunAciklamaTR.Trim();
// Aciklama sadece rakamlardan olusan bir sekilde ise onu aynen yaziyorum, bos yere kontorumuzu yemesin.
Regex harfKelimeRegex = new Regex(@"\b[^\W\d_]+\b", RegexOptions.IgnoreCase | RegexOptions.Multiline);
// Harf Kelime Regex'in metinde en az bir kez geçip geçmediğini kontrol etme
if (harfKelimeRegex.Matches(ifade).Count == 0)
{
objMalzemeAciklama.UzunAciklamaDE = ifade;
objMalzemeAciklama.UzunAciklamaEN = ifade;
objMalzemeAciklama.UzunAciklamaFR = ifade;
objMalzemeAciklama.UzunAciklamaNL = ifade;
objMalzemeAciklama.UzunAciklamaRU = ifade;
}
else
{
string text = "lütfen şu dolar işareti arasındaki, bir otomotiv yedek parçasına ait olan ifadeyi sırasıyla İngilizce, Fransızca, Almanca, Hollandaca ve Rusça'ya çevirir misin? : $" + ifade + "$";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
var requestBody = new
{
model = "gpt-4o",
messages = new[]
{
new { role = "system", content = text }
}
};
var response = await client.PostAsJsonAsync(apiUrl, requestBody);
if (response.IsSuccessStatusCode)
{
var responseBody = await response.Content.ReadAsStringAsync();
ChatCompletionResponse jsonResponse = JsonSerializer.Deserialize<ChatCompletionResponse>(responseBody);
string aiResponse = jsonResponse.choices[0].message.content.Trim().Replace("\"", "");
// Bana dondugu cevap belirli bir standartta oluyor.
// Ben de o dondugu cevabi parse eden bir REGEX yazarak her dili ayirdim.
UrunAciklama aciklama = dillereGoreAyir(aiResponse);
objMalzemeAciklama.UzunAciklamaDE = aciklama.Almanca;
objMalzemeAciklama.UzunAciklamaEN = aciklama.Ingilizce;
objMalzemeAciklama.UzunAciklamaFR = aciklama.Fransizca;
objMalzemeAciklama.UzunAciklamaNL = aciklama.Hollandaca;
objMalzemeAciklama.UzunAciklamaRU = aciklama.Rusca;
}
else
{
Console.WriteLine("An error occurred: " + response.ReasonPhrase);
var responseContent = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseContent);
}
}
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
ExcelIslemleri.List2Excel(lstMalzeme, "MalzemeAciklama", dosyaYolu.Replace("-Ceviri.xlsx", "-Ceviri_Auto.xlsx"));
}
}
else
{
Console.WriteLine("Dosya bulunamadı: " + dosyaYolu);
}
}
static UrunAciklama dillereGoreAyir(string p)
{
UrunAciklama sonuc = new UrunAciklama();
string pattern = @"(?:İngilizce|Fransızca|Almanca|Hollandaca|Rusça):\s*([^\n]*)";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
MatchCollection matches1 = regex.Matches(p);
int dilIndeks = 1;
///Console.WriteLine("Metin 1:");
foreach (Match match in matches1)
{
switch (dilIndeks)
{
case 1:
sonuc.Ingilizce = match.Groups[1].Value.Trim().Replace("$", "");
break;
case 2:
sonuc.Fransizca = match.Groups[1].Value.Trim().Replace("$", "");
break;
case 3:
sonuc.Almanca = match.Groups[1].Value.Trim().Replace("$", "");
break;
case 4:
sonuc.Hollandaca = match.Groups[1].Value.Trim().Replace("$", "");
break;
case 5:
sonuc.Rusca = match.Groups[1].Value.Trim().Replace("$", "");
break;
default:
throw new ArgumentException("Ne isin var ulan burada senin?!");
}
dilIndeks++;
}
return sonuc;
}
Selamlar.