Photo by Levart_Photographer on Unsplash

REACT UI MECHANICS

React ile AI Uygulamaların Geliştirimi — 3(Server and OpenAI Integration)

React UI Mekaniklerinde bu blog yazi serisinde AI uygulamalarını ve ChatGPT , Gemini gibi Web ortamlarını nasıl geliştirebileceğimizi analiz edip , bu konuda örnekler geliştirip bunların mantıklarını anlatıyor olacağım.

Frontend Development With JS
3 min readNov 21, 2024

--

Bu seriye ait blog yazıları;

3ncü blog yazımızda React Uygulamamıza geliştireceğimiz bir API üzerinden React → API → OpenAI SDK çağırımlarının yapılması kısmını geliştireceğiz.

Aşağıda bu örneğin resmini görebilirsiniz. Linki de burada.

https://onurdayibasi.dev/aichat-page-server-sync

Bu arada artık AI App Menu’su altına KnowledgeMap (Bilgi Haritası) erişim düğmesi ekledim. Bu sayede AI Chat sayfasına ait tüm geliştirmelere hızlı bir şekilde erişim sağlayabileceksiniz.

https://onurdayibasi.dev/ai-apps

Kısaca Nasıl Geliştirdim

1. Adım

Şimdi bu kısmı nasıl geliştirdiğimi kısaca anlatayım. Öncelikle Backend için hangi SDK’yı kullanabileceğimi inceledim.

OpenAI Platformuna üye oldum. Sizi aşağıdaki şekilde bir ekran karşılıyor.

https://platform.openai.com/

Bu ekranda kısaca ChatGPT SDK ile nasıl konuşabileceğiniz. Bunun için nasıl API Key oluşturabilirsiniz ve kullanabilirsiniz bu anlatılıyor zaten.


node.js
import OpenAI from "openai";
const openai = new OpenAI();
const completion = await openai.chat.completions.create({
model: "gpt-4o",
messages: [
{"role": "user", "content": "write a haiku about ai"}
]
});

2. Adım

Hono Web Application Framework kullanarak 1nci adımda oluşturduğum OpenAI SDK kullanma kısmını API’ye dönüştürdüm. Tabi bu kısmı oluştururken CORS tanımlaması yapmak gerekiyor çünkü aynı domain altında çalışmayacak.

import { Hono } from "hono";
import { cors } from "hono/cors";
import { runOpenAI } from "./openai";

const app = new Hono();

app.use(
"*",
cors({
origin: ["https://onurdayibasi.dev", "http://127.0.0.1:5173"],
})
);

app.post("/api/chat/:id", async (c) => {
const id = c.req.param("id");
const { content } = await c.req.json();
const response = await runOpenAI(content);
const result = { role: "assistant", content: response?.message?.content };
return c.json(result, 200);
});

app.get("/api/chat/:id", (c) => {
const id = c.req.param("id");

const response = {
version: "1.0.0",
messages: [
{
content: "Welcome to the chat!",
role: "assistant",
},
],
};
return c.json(response, 200);
});

3. Adım

CloudFlare içerisinde bir hesap oluşturarak Hono bu adresteki adımlarını kullanarak Web uygulamamı CloudFlare üzerine deploy ettim.

Daha sonra main push , GitHub Actions ile deploy bağlayarak Main branch yapılan güncellemelerin otomatik deploy çalıştırması sağladım.

4. Adım

Frontend kısmında sunucu tarafında bu API çağırıp düzgün çalışıp çalışmadığını test etmem gerekiyordu. Önceden geliştirmiş olduğum. MSW ve Axios kod örneğini aldım.

https://onurdayibasi.dev/msw_axios

Bunun bir benzerini oluşturacak şekilde klonunu oluşturup yeni bir Routing ile asıl örneğimizi oluşturdum.

https://onurdayibasi.dev/aichat-page-knowledge-map

Buradaki Axios örneğini incelediğimizde basit bir post yapıyoruz.

  const handlePost = (apiURL, message) => {
setLoading(true);
axios
.post(apiURL, message)
.then(function (response) {
console.log('data post', response?.data);
})
.catch(function (error) {
console.log('request failed', error);
})
.finally(function () {
setLoading(false);
});
};

5. Adım

Geçici olarak oluşturacağım bir TextArea üzerinden OpenAI Chat kısmına kullanıcı isteklerini gönderebilecek bir yapı oluşturdum.

https://onurdayibasi.dev/aichat-page-server-sync

Şimdilik Server Sync kısmını yaptık. Bir sonraki adım Sayfa Layout’unu oluşturarak bu TextArea ve düğmeyi sayfaya yerleştirmek olacak.

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--

No responses yet