استفاده از n8n
n8n یک ابزار خودکارسازی (Automation) متنباز است که به شما امکان میدهد با استفاده از یک رابط گرافیکی یا Visual Workflow Editor، انواع فرآیندها را بین سرویسها و APIهای مختلف بهشکل خودکار اجرا کنید. این ابزار از یک ساختار مبتنی بر Node استفاده میکند که هر Node میتواند یک عملیات مانند دریافت داده از یک API، پردازش اطلاعات، یا ارسال پیام به یک سرویس دیگر را انجام دهد.
n8n را میتوان هم بر بستر کلاد و هم بهشکل Self-hosted اجرا کرد. انعطافپذیری بالا و امکان نوشتن کدهای سفارشیسازیشده برای هر Node، این ابزار را میان توسعهدهندگان و تیمهای فنی بسیار محبوب کرده است.
نصب n8n
با توجه به زیرساختی که میخواهید n8n را روی آن نصب کنید میتوانید یکی از روشهای زیر را انتخاب کنید:
-
سادهترین راهکار نصب n8n استفاده از کانتینر ابری آروانکلاد است. برای نصب n8n تنها با چند کلیک میتوانید از لینک زیر استفاده کنید:
-
نصب با
npx
: -
نصب با
docker
:
اتصال 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