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

اتصال LangChain به چابکان

کلاس ChatOpenAI در LangChain اجازه تعیین base_url سفارشی را می‌دهد و برای قابلیت‌های استاندارد OpenAI-compatible چابکان مناسب است.

LangChain چیست؟

LangChain یک چارچوب توسعه برنامه‌های مبتنی بر مدل زبانی است. این چارچوب اجزایی برای پیام‌ها، promptها، مدل‌های chat، ابزارها، streaming و اتصال مراحل مختلف برنامه فراهم می‌کند و در Python و JavaScript/TypeScript قابل استفاده است.

LangChain زمانی مفید است که برنامه شما فراتر از یک درخواست ساده API باشد؛ برای مثال دستیار متصل به داده داخلی، زنجیره پردازش سند، عامل ابزارمحور یا سرویسی که باید provider مدل را قابل تعویض نگه دارد. اتصال این صفحه فقط لایه مدل را به چابکان وصل می‌کند. حافظه، retrieval، vector database، اجرای ابزار و سیاست دسترسی همچنان باید در معماری برنامه شما طراحی شوند.

برنامه LangChain → ChatOpenAI → API چابکان → مدل انتخابی

۱. آماده‌کردن environment

export CHABOKAN_AI_API_KEY="sk-chbk-کلید-واقعی-شما"
export CHABOKAN_AI_MODEL="openai/gpt-4o-mini"

Model ID نمونه را با شناسه دقیق «مدل‌های قابل استفاده» جایگزین کنید.

۲. Python

بسته را نصب کنید:

python -m pip install -U langchain-openai

نمونه گفت‌وگوی ساده:

import os
from langchain_openai import ChatOpenAI

model = ChatOpenAI(
model=os.environ["CHABOKAN_AI_MODEL"],
api_key=os.environ["CHABOKAN_AI_API_KEY"],
base_url="https://ai.chabokan.net/v1",
temperature=0,
timeout=60,
max_retries=2,
)

response = model.invoke("فقط عبارت «اتصال برقرار است» را پاسخ بده.")
print(response.content)

برای streaming:

for chunk in model.stream("در سه جمله کوتاه، caching را توضیح بده."):
print(chunk.content, end="", flush=True)

۳. JavaScript و TypeScript

بسته را نصب کنید:

npm install @langchain/openai @langchain/core

نمونه فراخوانی:

import { ChatOpenAI } from "@langchain/openai";

const model = new ChatOpenAI({
model: process.env.CHABOKAN_AI_MODEL,
apiKey: process.env.CHABOKAN_AI_API_KEY,
temperature: 0,
maxRetries: 2,
timeout: 60_000,
configuration: {
baseURL: "https://ai.chabokan.net/v1",
},
});

const response = await model.invoke(
"فقط عبارت «اتصال برقرار است» را پاسخ بده."
);

console.log(response.content);

۴. Tool calling

ابتدا مدلی انتخاب کنید که در /v1/models مقدار tools را در supported_parameters داشته باشد.

نمونه Python:

from langchain_core.tools import tool

@tool
def get_order_status(order_id: str) -> str:
"""Return a demonstration order status."""
return f"Order {order_id} is being processed"

model_with_tools = model.bind_tools([get_order_status])
response = model_with_tools.invoke("وضعیت سفارش 123 را بررسی کن.")

print(response.tool_calls)

این نمونه فقط درخواست tool را نشان می‌دهد. اجرای واقعی ابزار، اعتبارسنجی آرگومان‌ها و بازگرداندن نتیجه به مدل مسئولیت برنامه شما یا agent runtime است. هیچ ورودی تولیدشده توسط مدل را بدون کنترل به shell، دیتابیس یا عملیات مالی نفرستید.

۵. آزمون مستقل از LangChain

اگر برنامه خطا می‌دهد، ابتدا endpoint را مستقیم آزمایش کنید:

curl --fail-with-body https://ai.chabokan.net/v1/chat/completions \
-H "Authorization: Bearer $CHABOKAN_AI_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$CHABOKAN_AI_MODEL\",\"messages\":[{\"role\":\"user\",\"content\":\"سلام\"}]}"

اگر cURL موفق و LangChain ناموفق است، نسخه بسته، مقدار configuration.baseURL یا پارامترهای اضافی را بررسی کنید.

۶. ملاحظات سازگاری

  • قابلیت‌های استاندارد chat، streaming و tools از مسیر OpenAI-compatible قابل استفاده‌اند.
  • فیلدهای اختصاصی یک provider ممکن است توسط ChatOpenAI حفظ یا تفسیر نشوند.
  • multimodal، structured output و reasoning را برای هر مدل جدا آزمایش کنید.
  • response metadata بین مدل‌ها و providerها می‌تواند متفاوت باشد؛ منطق برنامه را به فیلد اختصاصی تأییدنشده وابسته نکنید.
  • در production برای timeout، retry و logging سقف مشخص قرار دهید.

منابع: ChatOpenAI در LangChain Python، ChatOpenAI در LangChain JavaScript