@@ -76,7 +76,7 @@ type PromptContent =
|
||||
export async function generateAIContent(
|
||||
model: string,
|
||||
prompt: PromptContent,
|
||||
config?: GenerationConfig
|
||||
config?: GenerationConfig,
|
||||
) {
|
||||
try {
|
||||
const response = await ai.models.generateContent({
|
||||
@@ -100,7 +100,7 @@ export async function generateAIContent(
|
||||
*/
|
||||
export async function generateText(
|
||||
model: string,
|
||||
prompt: string
|
||||
prompt: string,
|
||||
): Promise<{ text: string; usage?: UsageMetadata }> {
|
||||
const response = await generateAIContent(model, prompt);
|
||||
return {
|
||||
@@ -119,7 +119,7 @@ export async function generateText(
|
||||
export async function generateWithImage(
|
||||
model: string,
|
||||
imageBase64: string,
|
||||
textPrompt: string
|
||||
textPrompt: string,
|
||||
) {
|
||||
const response = await generateAIContent(model, [
|
||||
{
|
||||
@@ -151,7 +151,7 @@ export async function generateImage(
|
||||
imageBase64?: string,
|
||||
suggestions?: string[],
|
||||
model: string = AI_MODELS.FLASH_IMAGE,
|
||||
aspectRatio?: string
|
||||
aspectRatio?: string,
|
||||
): Promise<{ imageUrl: string | null; usage?: UsageMetadata }> {
|
||||
let parts: Array<
|
||||
{ text: string } | { inlineData: { mimeType: string; data: string } }
|
||||
@@ -166,7 +166,7 @@ export async function generateImage(
|
||||
// Görüntü düzenleme modu
|
||||
const cleanBase64 = imageBase64.replace(
|
||||
/^data:image\/(png|jpeg|webp|jpg);base64,/,
|
||||
""
|
||||
"",
|
||||
);
|
||||
|
||||
// Eğer Nano Banana modeli ve öneriler varsa, prompt'u zenginleştir
|
||||
@@ -200,8 +200,8 @@ export async function generateImage(
|
||||
});
|
||||
|
||||
const candidate = response.candidates?.[0];
|
||||
const imagePart = candidate?.content?.parts?.find(
|
||||
(p) => p.inlineData?.mimeType?.startsWith("image/")
|
||||
const imagePart = candidate?.content?.parts?.find((p) =>
|
||||
p.inlineData?.mimeType?.startsWith("image/"),
|
||||
);
|
||||
|
||||
if (imagePart?.inlineData?.data) {
|
||||
@@ -212,7 +212,10 @@ export async function generateImage(
|
||||
}
|
||||
|
||||
console.warn("No image part found in response");
|
||||
return { imageUrl: null, usage: response.usageMetadata as UsageMetadata | undefined };
|
||||
return {
|
||||
imageUrl: null,
|
||||
usage: response.usageMetadata as UsageMetadata | undefined,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("generateImage error:", error);
|
||||
return { imageUrl: null };
|
||||
@@ -226,7 +229,9 @@ export async function generateImage(
|
||||
* @param usage - Yapay zeka yanıtından kullanım meta verileri
|
||||
* @returns Para birimi cinsinden toplam maliyet
|
||||
*/
|
||||
export async function calculateAICost(usage: UsageMetadata | null | undefined): Promise<number> {
|
||||
export async function calculateAICost(
|
||||
usage: UsageMetadata | null | undefined,
|
||||
): Promise<number> {
|
||||
if (!usage) return 0;
|
||||
|
||||
const pricing = await getPricing();
|
||||
|
||||
Reference in New Issue
Block a user