Skip to content

Commit 06f85d2

Browse files
committed
docs: add ai/perplexity + update ai/cookbook
1 parent 9d62912 commit 06f85d2

6 files changed

Lines changed: 1194 additions & 44 deletions

File tree

src/components/Sidebar/data.js

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,11 @@ export default {
281281
icon: <IconContainer alt="https://media.liara.ir/logos/ai/mistral-nemo.svg" />,
282282
link: "/ai/mistral-nemo"
283283
},
284+
{
285+
title: "Perplexity",
286+
icon: <IconContainer alt="https://media.liara.ir/logos/ai/perplexity.svg" />,
287+
link: "/ai/perplexity"
288+
},
284289
{
285290
hr: true
286291
},
@@ -720,13 +725,30 @@ export default {
720725
)
721726
},
722727
{
723-
title: "سرور HTTP مبتنی بر NodeJS",
728+
title: "NodeJS",
729+
icon: <IconContainer alt="nodejs" />,
724730
link: "/ai/cookbook/api-servers/node-http-server"
725731
},
726732
{
727-
title: "سرور Express",
733+
title: "Express",
734+
icon: <IconContainer alt="https://media.liara.ir/logos/vps/expressjslogo.png" />,
728735
link: "/ai/cookbook/api-servers/express"
729736
},
737+
{
738+
title: "Hono",
739+
icon: <IconContainer alt="https://media.liara.ir/docs/hono-logo-icon.png" />,
740+
link: "/ai/cookbook/api-servers/hono"
741+
},
742+
{
743+
title: "Fastify",
744+
icon: <IconContainer alt="fastify" />,
745+
link: "/ai/cookbook/api-servers/fastify"
746+
},
747+
{
748+
title: "NestJS",
749+
icon: <IconContainer alt="nest" />,
750+
link: "/ai/cookbook/api-servers/nest"
751+
},
730752
{
731753
hr: true
732754
},
@@ -769,27 +791,6 @@ export default {
769791
title: "فراخوانی Toolها به‌صورت موازی",
770792
link: "/ai/cookbook/rsc/call-tools-in-parallel"
771793
},
772-
// {
773-
// title: "ذخیره پیام‌ها در دیتابیس",
774-
// link: "/ai/cookbook/rsc/save-messages-to-database"
775-
// },
776-
// {
777-
// title: "",
778-
// link: "/ai/cookbook/rsc/restore-messages-from-database"
779-
// },
780-
// {
781-
// title: "",
782-
// link: "/ai/cookbook/rsc/render-visual-interface-in-chat"
783-
// },
784-
// {
785-
// title: "",
786-
// link: "/ai/cookbook/rsc/stream-updates-to-visual-interfaces"
787-
// },
788-
// {
789-
// title: "",
790-
// link: "/ai/cookbook/rsc/stream-ui-record-token-usage"
791-
// },
792-
793794
],
794795

795796
'ai-sdk-core': [

src/pages/ai/about.mdx

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -99,35 +99,16 @@ import Head from "next/head";
9999
در حال حاضر، لیارا در API خود، از هوش مصنوعی‌های زیر پشتیبانی می‌کند:
100100

101101
<div className="h-4" />
102-
<div className="grid md:grid-cols-3 gap-4">
102+
<div className="grid md:grid-cols-4 gap-4">
103103
{[
104104
{ alt: 'https://media.liara.ir/logos/ai/openai-light.svg', platform: 'OpenAI/GPT', link: "./openai" },
105105
{ alt: 'https://media.liara.ir/logos/ai/gemini-google.svg', platform: 'Google/Gemini', link: "./google-gemini" },
106106
{ alt: 'https://media.liara.ir/logos/ai/grok-x-ai.svg', platform: 'X-AI/Grok', link: "./grok-x-ai" },
107-
].map(item =>
108-
<Link href={item.link}>
109-
<Card className="flex cursor-pointer w-full items-center justify-between">
110-
<div className="flex items-center gap-3">
111-
<div className="w-[40px] p-1 bg-[#333] rounded-lg">
112-
<PlatformIcon platform={item.alt} />
113-
</div>
114-
<h4>
115-
{item.platform}
116-
</h4>
117-
</div>
118-
<GoArrowLeft className="ml-1" />
119-
</Card>
120-
</Link>
121-
)}
122-
</div>
123-
<div className="h-4" />
124-
125-
<div className="grid md:grid-cols-4 gap-4">
126-
{[
127107
{ alt: 'https://media.liara.ir/logos/ai/deepseek.svg', platform: 'DeepSeek', link: "./deepseek" },
128108
{ alt: 'https://media.liara.ir/logos/ai/claude.svg', platform: 'Anthropic/Claude', link: "./anthropic-claude" },
129109
{ alt: 'https://media.liara.ir/logos/ai/meta-llama.svg', platform: 'Meta/Llama', link: "./meta-llama" },
130110
{ alt: 'https://media.liara.ir/logos/ai/mistral-nemo.svg', platform: 'Mistral NeMo', link: "./mistral-nemo" },
111+
{ alt: 'https://media.liara.ir/logos/ai/perplexity.svg', platform: 'Perplexity', link: "./perplexity" },
131112
].map(item =>
132113
<Link href={item.link}>
133114
<Card className="flex cursor-pointer w-full items-center justify-between">
Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
2+
3+
import Layout from "@/components/Layout";
4+
import Button from "@/components/Common/button";
5+
import Section from "@/components/Common/section";
6+
import Alert from "@/components/Common/alert";
7+
import ThemePlatformIcon from "@/components/Common/themeIcons"
8+
import Tabs from "@/components/Common/tab";
9+
import Step from "@/components/Common/step";
10+
import Card from "@/components/Common/card";
11+
import Important from "@/components/Common/important";
12+
import Highlight from "@/components/Common/highlight";
13+
import Link from "next/link";
14+
import PlatformIcon from "@/components/Common/icons";
15+
import HighlightTabs from "@/components/Common/HighlightTabs";
16+
import IconContainer from "@/components/Common/IconContainer";
17+
import {
18+
GoContainer,
19+
GoDatabase,
20+
GoRocket,
21+
GoServer,
22+
GoMail,
23+
GoGlobe,
24+
GoArrowLeft,
25+
GoTelescope,
26+
} from "react-icons/go";
27+
28+
import Head from "next/head";
29+
30+
<Layout>
31+
<Head>
32+
<title>مستندات اتصال به AI در فریم‌ورک Fastify - لیارا</title>
33+
<meta property="og:title" content="مستندات خدمات رایانش ابری لیارا" />
34+
<meta property="og:description" content="مستندات مربوط به آشنایی با نحوه اتصال به سرویس هوش مصنوعی لیارا در فریم‌ورک Fastify" />
35+
<meta property="og:image" content="https://media.liara.ir/logos/liara-poster.jpg" />
36+
</Head>
37+
38+
39+
# اتصال به هوش مصنوعی در فریم‌ورک Fastify
40+
<hr className="mb-2" />
41+
می‌توانید از AI SDK در یک سرور Fastify استفاده کنید تا متن و آبجکت‌ها را تولید کرده و به‌صورت استریم به کلاینت ارسال نمایید.
42+
43+
<hr className="mb-2" />
44+
45+
مثال‌های زیر، یک سرور HTTP ساده راه‌اندازی می‌کنند که روی پورت <Important>8080</Important> در حال گوش کردن است. می‌توانید با استفاده از دستور زیر در <Important>curl</Important>، سرور خود را آزمایش کنید:
46+
47+
<div className="h-2" />
48+
<div dir='ltr'>
49+
<Highlight className="bash">
50+
{`curl -X POST http://localhost:8080`}
51+
</Highlight>
52+
</div>
53+
<div className="h-2" />
54+
55+
<Section id='data-stream' title='استریم داده‌ها' />
56+
57+
58+
59+
60+
<div className="h-2" />
61+
در مسیر <Important>src/index.ts</Important> قطعه کد زیر را قرار دهید:
62+
63+
<div className="h-2" />
64+
<div dir='ltr'>
65+
<Highlight className="js">
66+
{`import { createOpenAI } from '@ai-sdk/openai';
67+
import { streamText } from 'ai';
68+
import Fastify from 'fastify';
69+
import { config } from 'dotenv';
70+
71+
config();
72+
73+
const my_model = createOpenAI({
74+
baseURL: process.env.BASE_URL!,
75+
apiKey: process.env.LIARA_API_KEY!,
76+
});
77+
78+
const fastify = Fastify({ logger: true });
79+
80+
fastify.post('/', async function (request, reply) {
81+
const result = streamText({
82+
model: my_model('openai/gpt-4o-mini'),
83+
prompt: 'Invent a new holiday and describe its traditions.',
84+
});
85+
86+
reply.header('Content-Type', 'text/plain; charset=utf-8');
87+
88+
return reply.send(result.toDataStream());
89+
});
90+
91+
fastify.listen({ port: 8080 });`}
92+
</Highlight>
93+
</div>
94+
<div className="h-2" />
95+
96+
<Alert variant="info">
97+
<p>
98+
متغیرهای محیطی <Important>BASE_URL</Important> و <Important>LIARA_API_KEY</Important> همان baseUrl <a href="https://liara.ir/products/ai/" className="text-[#2196f3]">سرویس هوش مصنوعی لیارا</a> و <a href="/references/api/about/#api-access-key" className="text-[#2196f3]">کلید API لیارا</a> هستند که باید در بخش متغیرهای محیطی برنامه خود، آن‌ها را تنظیم کنید.
99+
</p>
100+
</Alert>
101+
102+
103+
<hr className="mb-2" />
104+
<Section id='sending-custom-data' title='ارسال داده‌های سفارشی' />
105+
106+
متد <Important>createDataStream</Important> می‌تواند برای ارسال داده‌های سفارشی به کلاینت مورد استفاده قرار گیرد.
107+
108+
<div className="h-2" />
109+
<div dir='ltr'>
110+
<Highlight className="js">
111+
{`// curl -X POST http://localhost:8080/stream-data
112+
import { createOpenAI } from '@ai-sdk/openai';
113+
import { createDataStream, streamText } from 'ai';
114+
import Fastify from 'fastify';
115+
import { config } from 'dotenv';
116+
117+
config();
118+
119+
const my_model = createOpenAI({
120+
baseURL: process.env.BASE_URL!,
121+
apiKey: process.env.LIARA_API_KEY!,
122+
});
123+
124+
const fastify = Fastify({ logger: true });
125+
126+
fastify.post('/stream-data', async function (request, reply) {
127+
// immediately start streaming the response
128+
const dataStream = createDataStream({
129+
execute: async dataStreamWriter => {
130+
dataStreamWriter.writeData('initialized call');
131+
132+
const result = streamText({
133+
model: my_model('openai/gpt-4o-mini'),
134+
prompt: 'Invent a new holiday and describe its traditions.',
135+
});
136+
137+
result.mergeIntoDataStream(dataStreamWriter);
138+
},
139+
onError: error => {
140+
// Error messages are masked by default for security reasons.
141+
// If you want to expose the error message to the client, you can do so here:
142+
return error instanceof Error ? error.message : String(error);
143+
},
144+
});
145+
146+
// Mark the response as a v1 data stream:
147+
reply.header('X-Vercel-AI-Data-Stream', 'v1');
148+
reply.header('Content-Type', 'text/plain; charset=utf-8');
149+
150+
return reply.send(dataStream);
151+
});
152+
153+
fastify.listen({ port: 8080 });`}
154+
</Highlight>
155+
</div>
156+
157+
<hr className="mb-2" />
158+
<Section id='text-stream' title='استریم متن' />
159+
160+
می‌توانید با استفاده از متد <Important>textStream</Important>، یک استریم متنی به کلاینت ارسال کنید.
161+
162+
<div className="h-2" />
163+
<div dir='ltr'>
164+
<Highlight className="js">
165+
{`import { createOpenAI } from '@ai-sdk/openai';
166+
import { streamText } from 'ai';
167+
import Fastify from 'fastify';
168+
import { config } from 'dotenv';
169+
170+
171+
config();
172+
173+
const my_model = createOpenAI({
174+
baseURL: process.env.BASE_URL!,
175+
apiKey: process.env.LIARA_API_KEY!,
176+
});
177+
const fastify = Fastify({ logger: true });
178+
179+
fastify.post('/', async function (request, reply) {
180+
const result = streamText({
181+
model: my_model('openai/gpt-4o-mini'),
182+
prompt: 'Invent a new holiday and describe its traditions.',
183+
});
184+
185+
reply.header('Content-Type', 'text/plain; charset=utf-8');
186+
187+
return reply.send(result.textStream);
188+
});
189+
190+
fastify.listen({ port: 8080 });`}
191+
</Highlight>
192+
</div>
193+
<div className="h-2" />
194+
195+
196+
<Alert variant="success">
197+
<p>
198+
پروژه فوق را می‌توانید به‌صورت کامل در <a href="https://github.com/liara-cloud/ai-sdk-examples/tree/master/API-Servers/fastify" className="text-[#2196f3]">گیت‌هاب لیارا</a>، مشاهده کنید.
199+
</p>
200+
</Alert>
201+
202+
</Layout>
203+

0 commit comments

Comments
 (0)