پرش به مطلب اصلی

استفاده از n8n

n8n یک ابزار خودکارسازی (Automation) متن‌باز است که به شما امکان می‌دهد با استفاده از یک رابط گرافیکی یا Visual Workflow Editor، انواع فرآیندها را بین سرویس‌ها و APIهای مختلف به‌شکل خودکار اجرا کنید. این ابزار از یک ساختار مبتنی بر Node استفاده می‌کند که هر Node می‌تواند یک عملیات مانند دریافت داده از یک API، پردازش اطلاعات، یا ارسال پیام به یک سرویس دیگر را انجام دهد.

n8n را می‌توان هم بر بستر کلاد و هم به‌شکل Self-hosted اجرا کرد. انعطاف‌پذیری بالا و امکان نوشتن کدهای سفارشی‌سازی‌شده برای هر Node، این ابزار را میان توسعه‌دهندگان و تیم‌های فنی بسیار محبوب کرده است.

نصب n8n

با توجه به زیرساختی که می‌خواهید n8n را روی آن نصب کنید می‌توانید یکی از روش‌های زیر را انتخاب کنید:

اتصال n8n به سرویس هوش مصنوعی آروان‌کلاد

ابتدا یک Chat Trigger اضافه کنید، سپس با اضافه کردن Basic LLM Chain و OpenAI Chat Model، آن‌ها را مطابق تصویر به هم متصل کنید:

در تنظیمات OpenAI Chat Model یک Credential جدید ایجاد کنید.

سپس API Key و آدرس URL اندپوینتی که در پنل کاربری آروان برای سرویس هوش مصنوعی ساخته‌اید در این قسمت قرار دهید:

برای دریافت این مقادیر می‌توانید از راهنمای ساخت Endpoint کمک بگیرید.

روی دکمه‌ی Save کلیک کنید.

در این مرحله اگر با خطایی مواجه شدید، آن را نادیده بگیرید.

با کلیک روی دکمه‌ی بازگشت، نوع مدل را از Fixed به Expression تغییر دهید:

اکنون می‌توانید در پایین صفحه با مدل چت کنید.

نمونه کدها

OpenAI SDK

برای استفاده از OpenAI SDK می‌توانید از راهنمای زیر استفاده کنید:

Golang

شیوه اجرا:

Go mod tidy
Go run main.go

نمونه کد:

package main


import (
"context"
"fmt"
"log"


"github.com/sashabaranov/go-openai"
)


func main() {
// Create OpenAI client with custom base URL and API key
config := openai.DefaultConfig("apikey . . . ")
config.BaseURL = "https://arvancloudai.ir/gateway/models/Gemini-2.5-Pro/. . . /v1"

client := openai.NewClientWithConfig(config)


// Create chat completion request
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: "Gemini-2.5-Pro",
Messages: []openai.ChatCompletionMessage{
{
Role: openai.ChatMessageRoleUser,
Content: "tell me a joke about product managers",
},
},
MaxTokens: 10000,
Temperature: 0.8,
},
)


if err != nil {
log.Fatalf("ChatCompletion error: %v", err)
}


fmt.Printf("%+v\n", resp)
}

TypeScript

فایل package.json:

{
"name": "ai-chat-client",
"version": "1.0.0",
"description": "TypeScript OpenAI chat client",
"main": "main.ts",
"scripts": {
"start": "ts-node main.ts",
"build": "tsc main.ts",
"dev": "ts-node-dev main.ts"
},
"dependencies": {
"openai": "^5.12.2"
},
"devDependencies": {
"@types/node": "^22.12.0",
"ts-node": "^10.9.2",
"ts-node-dev": "^2.0.0",
"typescript": "^5.5.4"
}
}

دستورهای زیر را اجرا کنید:

npm install
npm start

نمونه کد:

import OpenAI from 'openai';


// Create OpenAI client with custom base URL and API key
const client = new OpenAI({
apiKey: "apikey . . .",
baseURL: "https://arvancloudai.ir/gateway/models/Gemini-2.5-Pro/. . . /v1"
});


async function main() {
try {
// Create chat completion request
const response = await client.chat.completions.create({
model: "Gemini-2.5-Pro",
messages: [
{
role: "user",
content: "tell me a joke about product managers"
}
],
max_tokens: 10000,
temperature: 0.8,
});


console.log(response.choices[0].message.content);
} catch (error) {
console.error('Error:', error);
}
}


main();

LangChain

Python

شیوه اجرا:

Pip install langchain langchain-openai langchain-core
Python main.py

نمونه کد:

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage


# Set up the LangChain ChatOpenAI with custom base URL and API key
llm = ChatOpenAI(
api_key="apikey ...",
base_url="https://arvancloudai.ir/gateway/models/Gemini-2.5-Pro/.../v1",
model="Gemini-2.5-Pro",
max_tokens=10000,
temperature=0.8,
)


# Create a human message
messages = [HumanMessage(content="tell me a joke about product managers")]


# Invoke the model
response = llm.invoke(messages)


print(response)

Golang

شیوه اجرا:

Go mod tidy
Go run main.go

نمونه کد:

package main


import (
"context"
"fmt"
"log"


"github.com/tmc/langchaingo/llms"
"github.com/tmc/langchaingo/llms/openai"
)


func main() {
// Create LangChain OpenAI LLM with custom base URL and API key
llm, err := openai.New(
openai.WithToken("apikey ..."),
openai.WithBaseURL("https://arvancloudai.ir/gateway/models/Gemini-2.5-Pro/.../v1"),
openai.WithModel("Gemini-2.5-Pro"),
)
if err != nil {
log.Fatalf("Failed to create OpenAI LLM: %v", err)
}


// Create context
ctx := context.Background()


// Create message content
content := "tell me a joke about product managers"


// Generate response using LangChain
response, err := llms.GenerateFromSinglePrompt(
ctx,
llm,
content,
llms.WithTemperature(0.8),
llms.WithMaxTokens(10000),
)
if err != nil {
log.Fatalf("Failed to generate response: %v", err)
}


fmt.Printf("Response: %s\n", response)


// Alternative: Using the Call method directly with prompt
callResponse, err := llm.Call(
ctx,
content,
llms.WithTemperature(0.8),
llms.WithMaxTokens(10000),
)
if err != nil {
log.Fatalf("Failed to call LLM: %v", err)
}


fmt.Printf("Call Response: %s\n", callResponse)
}

TypeScript

فایل package.json:

{
"name": "ai-chat-langchain-client",
"version": "1.0.0",
"description": "TypeScript LangChain LLM chat client",
"main": "main.ts",
"scripts": {
"start": "ts-node main.ts",
"build": "tsc main.ts",
"dev": "ts-node-dev main.ts"
},
"dependencies": {
"@langchain/openai": "^0.3.11",
"@langchain/core": "^0.3.18",
"langchain": "^0.3.6"
},
"devDependencies": {
"@types/node": "^22.12.0",
"ts-node": "^10.9.2",
"ts-node-dev": "^2.0.0",
"typescript": "^5.5.4"
}
}

نمونه کد:

import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage } from "@langchain/core/messages";


async function main() {
try {
// Create LangChain ChatOpenAI with custom base URL and API key
const llm = new ChatOpenAI({
apiKey: "apikey ...",
configuration: {
baseURL: "https://arvancloudai.ir/gateway/models/Gemini-2.5-Pro/.../v1",
},
model: "Gemini-2.5-Pro",
maxTokens: 10000,
temperature: 0.8,
});


// Create a human message
const messages = [new HumanMessage("tell me a joke about product managers")];


// Invoke the model
const response = await llm.invoke(messages);


console.log("Response:", response.content);


} catch (error) {
console.error('Error:', error);
}
}


main();

دستور زیر را اجرا کنید:

Npm start