نظرة عامة
يوضح هذا المشروع كيفية بناء خدمة طقس محسنة بالذكاء الاصطناعي باستخدام Genkit و TypeScript و OpenWeatherAPI و نماذج GitHub. تُظهر التطبيق أنماط Node.js الحديثة وتقنيات دمج الذكاء الاصطناعي.
المتطلبات
قبل البدء، تأكد من توفر ما يلي:
- تثبيت Node.js على جهازك
- حساب GitHub ورمز وصول لواجهات برمجة التطبيقات في GitHub
- مفتاح OpenWeatherAPI لاسترداد بيانات الطقس
- تثبيت سطر الأوامر لـ Genkit على جهازك
تحليل فني عميق
تكوين الذكاء الاصطناعي
يتم تهيئة إعداد الذكاء الاصطناعي الأساسي باستخدام Genkit وتكامل الوصلة مع GitHub. في هذه الحالة، سنستخدم نموذج OpenAI GPT-3:
const ai = genkit({
plugins: [
github({ githubToken: process.env.GITHUB_TOKEN }),
],
model: openAIO3Mini,
});
تنفيذ أداة الطقس
يحدد التطبيق أداة طقس مخصصة باستخدام التحقق من صحة مخطط Zod:
const getWeather = ai.defineTool(
{
name: 'getWeather',
description: 'Gets the current weather in a given location',
inputSchema: weatherToolInputSchema,
outputSchema: z.string(),
},
async (input) => {
const weather = new OpenWeatherAPI({
key: process.env.OPENWEATHER_API_KEY,
units: "metric"
})
const data = await weather.getCurrent({locationName: input.location});
return `The current weather in ${input.location} is: ${data.weather.temp.cur} Degrees in Celsius`;
}
);
تعريف تدفق الذكاء الاصطناعي
تكشف الخدمة عن تدفق ذكاء اصطناعي يعالج طلبات الطقس:
const helloFlow = ai.defineFlow(
{
name: 'helloFlow',
inputSchema: z.object({ location: z.string() }),
outputSchema: z.string(),
},
async (input) => {
const response = await ai.generate({
tools: [getWeather],
prompt: `What's the weather in ${input.location}?`
});
return response.text;
}
);
تكوين خادم Express
يستخدم التطبيق وصلة Genkit Express لإنشاء خادم API:
const app = express({
flows: [helloFlow],
});
الشيفرة الكاملة
الشيفرة الكاملة لخدمة الطقس هي كالتالي:
/* eslint-disable @typescript-eslint/no-explicit-any */
import { genkit, z } from 'genkit';
import { startFlowServer } from '@genkit-ai/express';
import { openAIO3Mini, github } from 'genkitx-github';
import {OpenWeatherAPI } from 'openweather-api-node';
import dotenv from 'dotenv';
dotenv.config();
const ai = genkit({
plugins: [
github({ githubToken: process.env.GITHUB_TOKEN }),
],
model: openAIO3Mini,
});
const weatherToolInputSchema = z.object({
location: z.string().describe('The location to get the current weather for')
});
const getWeather = ai.defineTool(
{
name: 'getWeather',
description: 'Gets the current weather in a given location',
inputSchema: weatherToolInputSchema,
outputSchema: z.string(),
},
async (input) => {
const weather = new OpenWeatherAPI({
key: process.env.OPENWEATHER_API_KEY,
units: "metric"
})
const data = await weather.getCurrent({locationName: input.location});
return `The current weather in ${input.location} is: ${data.weather.temp.cur} Degrees in Celsius`;
}
);
const helloFlow = ai.defineFlow(
{
name: 'helloFlow',
inputSchema: z.object({ location: z.string() }),
outputSchema: z.string(),
},
async (input) => {
const response = await ai.generate({
tools: [getWeather],
prompt: `What's the weather in ${input.location}?`
});
return response.text;
}
);
startFlowServer({
flows: [helloFlow]
});
الإعداد والتطوير
1. تثبيت التبعيات:
npm install
2. تكوين متغيرات البيئة:
GITHUB_TOKEN=your_token
OPENWEATHER_API_KEY=your_key
3. تشغيل خادم التطوير:
npm run genkit:start
4. لتشغيل المشروع في وضع التصحيح وتحديد نقاط التوقف، يمكنك تشغيل:
npm run genkit:start:debug
ثم، قم بتشغيل المصحح في بيئة التطوير المتكاملة الخاصة بك. انظر إلى ملف .vscode/launch.json
للتكوين.
5. إذا كنت ترغب في بناء المشروع، يمكنك تشغيل:
npm run build
6. تشغيل المشروع في وضع الإنتاج:
npm run start:production
التبعيات
التبعيات الأساسية
genkit
: ^1.0.5@genkit-ai/express
: ^1.0.5openweather-api-node
: ^3.1.5genkitx-github
: ^1.13.1dotenv
: ^16.4.7
التبعيات التطويرية
tsx
: ^4.19.2typescript
: ^5.7.2
تكوين المشروع
- استخدام وحدات ES (
"type": "module"
) - نوع البرمجة TypeScript مع تحليل الوحدات NodeNext
- دليل الإخراج: lib
- دعم TypeScript الكامل مع تعريفات الأنواع
الترخيص
Apache 2.0
الموارد
الختام
يوضح هذا المشروع كيفية بناء خدمة طقس باستخدام Genkit في Node.js مع دمج الذكاء الاصطناعي. يعرض التطبيق أنماط Node.js الحديثة وتقنيات دمج الذكاء الاصطناعي.
يمكنك العثور على الشفرة الكاملة لهذا المثال في مستودع GitHub.
نتمنى لك وقتًا ممتعًا في الكتابة!
Source:
https://dzone.com/articles/building-weather-service-genkit-ai