مُشَارِكَات Go لـ Ollama: مقارنة SDK و أمثلة Qwen3/GPT-OSS

دمج Ollama مع Go: دليل SDK، أمثلة، وممارسات إنتاجية مثالية.

Page content

هذا الدليل يقدم لمحة شاملة عن مكتبات Go SDK المتاحة لـ Ollama ويقارن مجموعات ميزاتها.

سنتناول أمثلة عملية لاستخدام Qwen3 وGPT-OSS المضيفين على Ollama، سواء عبر مكالمات REST API مباشرة أو العميل الرسمي لـ Go، بما في ذلك معالجة تفاصيل وضع التفكير وغير التفكير في Qwen3 بشكل مفصل.

go and ollama

لماذا Ollama + Go؟

[يعرض Ollama] (https://docs.ollama.com/api) واجهة HTTP صغيرة ومفيدة (عادة تعمل على http://localhost:11434) مصممة لمهام الإنتاج والمحادثة، مع دعم مدمج للتدفق ووظائف إدارة النماذج. تغطي الوثائق الرسمية بشكل شامل هيكل طلبات واستجابات /api/generate و/api/chat وsemantics التدفق.

Go هو خيار ممتاز لـ بناء عملاء Ollama بسبب دعم مكتبة القياسي القوية لـ HTTP، معالجة JSON ممتازة، وعناصر متزامنة أصلية، وواجهات محددة مسبقًا تلتقط الأخطاء في وقت التجميع.

حتى أكتوبر 2025، إليك خيارات Go SDK التي من المحتمل أن تنظر فيها.


Go SDKs لـ Ollama — ما الذي متاح؟

SDK / الحزمة الحالة و"المالك" النطاق (الإنتاج / المحادثة / التدفق) إدارة النموذج (السحب / القائمة / إلخ) الميزات الإضافية / الملاحظات
github.com/ollama/ollama/api الحزمة الرسمية داخل مستودع Ollama؛ تُستخدم بواسطة ollama CLI نفسه الغطاء الكامل المُنَسَّق مع REST؛ دعم التدفق متوفر نعم يُعتبر العميل Go الرسمي المعياري؛ تتوافق API مع الوثائق عن كثب.
LangChainGo (github.com/tmc/langchaingo/llms/ollama) إطار عمل مجتمعي (LangChainGo) مع وحدة LLM لـ Ollama المحادثة / الإكمال + التدفق عبر إجراءات الإطار محدود (إدارة النموذج ليست الهدف الرئيسي) رائع إذا كنت ترغب في سلاسل، أدوات، مخازن المتجهات في Go؛ أقل من SDK خام.
github.com/swdunlop/ollama-client عميل مجتمعي التركيز على المحادثة؛ تجارب جيدة للدعوة الأدوات جزئي تم بناؤه لتجربة استخدام الدعوة الأدوات؛ ليس سطحًا كاملًا 1:1.
SDKs مجتمعية أخرى (مثل ollamaclient، “go-ollama-sdk” من طرف ثالث) مجتمع يختلف يختلف الجودة والغطاء يختلفان؛ تقييم حسب المستودع.

التوصية: في الإنتاج، تفضل github.com/ollama/ollama/api — فهي تُدار مع المشروع الأساسي وتتوافق مع واجهة REST API.


Qwen3 وGPT-OSS على Ollama: التفكير مقابل غير التفكير (ما يجب معرفته)

  • وضع التفكير في Ollama يفصل بين “الاستنتاج” النموذج عن النتيجة النهائية عند تمكينه. يوثق Ollama سلوك تمكين / تعطيل التفكير كسلوك رئيسي عبر النماذج المدعومة.
  • (https://www.glukhov.org/ar/post/2025/10/qwen3-30b-vs-gpt-oss-20b/ “Qwen3:30b vs GPT-OSS:20b: التفاصيل التقنية، مقارنة الأداء والسرعة”) يدعم التبديل الديناميكي: أضف /think أو /no_think في الرسائل النظامية / المستخدمية لتبديل الوضع تدريجيًا؛ الأمر الأخير يفوز.
  • GPT-OSS: يبلغ المستخدمون أن تعطيل التفكير (مثل /set nothink أو --think=false) قد يكون غير موثوق على gpt-oss:20b؛ خطط لـ الفلترة / إخفاء أي استنتاج لا يجب أن يظهره واجهتك.

الجزء 1 — استدعاء Ollama عبر REST مباشر (Go، net/http)

الأنواع المشتركة

أولاً، دعنا نحدد الأنواع المشتركة والوظائف المساعدة التي سنستخدمها عبر أمثلتنا:

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"time"
)

// ---- أنواع واجهة المحادثة ----

type ChatMessage struct {
	Role    string `json:"role"`
	Content string `json:"content"`
}

type ChatRequest struct {
	Model    string        `json:"model"`
	Messages []ChatMessage `json:"messages"`
	// بعض الخوادم تُعرض التحكم في التفكير كعلم boolean.
	// حتى لو تم تجاهله، يمكنك لا تزال التحكم في Qwen3 عبر /think أو /no_think.
	Think   *bool          `json:"think,omitempty"`
	Stream  *bool          `json:"stream,omitempty"`
	Options map[string]any `json:"options,omitempty"`
}

type ChatResponse struct {
	Model     string `json:"model"`
	CreatedAt string `json:"created_at"`
	Message   struct {
		Role     string `json:"role"`
		Content  string `json:"content"`
		Thinking string `json:"thinking,omitempty"` // موجود عند تمكين التفكير
	} `json:"message"`
	Done bool `json:"done"`
}

// ---- أنواع واجهة الإنتاج ----

type GenerateRequest struct {
	Model   string         `json:"model"`
	Prompt  string         `json:"prompt"`
	Think   *bool          `json:"think,omitempty"`
	Stream  *bool          `json:"stream,omitempty"`
	Options map[string]any `json:"options,omitempty"`
}

type GenerateResponse struct {
	Model     string `json:"model"`
	CreatedAt string `json:"created_at"`
	Response  string `json:"response"`           // النص النهائي لغير التدفق
	Thinking  string `json:"thinking,omitempty"` // موجود عند تمكين التفكير
	Done      bool   `json:"done"`
}

// ---- وظائف مساعدة ----

func httpPostJSON(url string, payload any) ([]byte, error) {
	body, err := json.Marshal(payload)
	if err != nil {
		return nil, err
	}
	c := &http.Client{Timeout: 60 * time.Second}
	resp, err := c.Post(url, "application/json", bytes.NewReader(body))
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	return io.ReadAll(resp.Body)
}

// bptr يعيد مؤشرًا إلى قيمة boolean
func bptr(b bool) *bool { return &b }

المحادثة — Qwen3 مع التفكير مفعل (وكيفية تعطيله)

func chatQwen3Thinking() error {
	endpoint := "http://localhost:11434/api/chat"

	req := ChatRequest{
		Model:   "qwen3:8b-thinking", // أي :*-thinking تمت سحبها
		Think:   bptr(true),
		Stream:  bptr(false),
		Messages: []ChatMessage{
			{Role: "system", Content: "أنت مساعد دقيق."},
			{Role: "user",   Content: "اذكر التكرار مع مثال قصير بلغة Go."},
		},
	}

	raw, err := httpPostJSON(endpoint, req)
	if err != nil {
		return err
	}
	var out ChatResponse
	if err := json.Unmarshal(raw, &out); err != nil {
		return err
	}
	fmt.Println("🧠 التفكير:\n", out.Message.Thinking)
	fmt.Println("\n💬 الإجابة:\n", out.Message.Content)
	return nil
}

// لتعطيل التفكير في الدور التالي، قم ب:
// (أ) تعيين Think=false، و/أو
// (ب) إضافة "/no_think" إلى آخر رسالة نظامية / مستخدمية (مفتاح تبديل ناعم لـ Qwen3).
// Qwen3 يحترم أحدث تعليمات /think أو /no_think في المحادثات متعددة الدورات.
func chatQwen3NoThinking() error {
	endpoint := "http://localhost:11434/api/chat"

	req := ChatRequest{
		Model:  "qwen3:8b-thinking",
		Think:  bptr(false),
		Stream: bptr(false),
		Messages: []ChatMessage{
			{Role: "system", Content: "أنت مختصر. /no_think"},
			{Role: "user",   Content: "اذكر التكرار في جملة واحدة."},
		},
	}

	raw, err := httpPostJSON(endpoint, req)
	if err != nil {
		return err
	}
	var out ChatResponse
	if err := json.Unmarshal(raw, &out); err != nil {
		return err
	}
	// توقع أن يكون التفكير فارغًا؛ لا تزال التعامل بحذر.
	if out.Message.Thinking != "" {
		fmt.Println("🧠 التفكير (غير متوقع):\n", out.Message.Thinking)
	}
	fmt.Println("\n💬 الإجابة:\n", out.Message.Content)
	return nil
}

(يُوثق مفتاح التبديل الناعم لـ Qwen3 /think و/no_think من قبل فريق Qwen؛ يفوز التعليم الأخير في المحادثات متعددة الدورات.)

المحادثة — GPT-OSS مع التفكير (وتحذير)

func chatGptOss() error {
	endpoint := "http://localhost:11434/api/chat"

	req := ChatRequest{
		Model:  "gpt-oss:20b",
		Think:  bptr(true),   // طلب فصل الاستنتاج إذا كان مدعومًا
		Stream: bptr(false),
		Messages: []ChatMessage{
			{Role: "user", Content: "ما هو البرمجة الديناميكية؟ اشرح الفكرة الأساسية."},
		},
	}

	raw, err := httpPostJSON(endpoint, req)
	if err != nil {
		return err
	}
	var out ChatResponse
	if err := json.Unmarshal(raw, &out); err != nil {
		return err
	}
	// عيب معروف: تعطيل التفكير قد لا يثبط الاستنتاج تمامًا على gpt-oss:20b.
	// تأكد دائمًا من تصفية / إخفاء التفكير في الواجهة إذا كنت لا ترغب في عرضه.
	fmt.Println("🧠 التفكير:\n", out.Message.Thinking)
	fmt.Println("\n💬 الإجابة:\n", out.Message.Content)
	return nil
}

يبلغ المستخدمون أن تعطيل التفكير على gpt-oss:20b (مثل /set nothink أو --think=false) قد يُتجاهل — خطط لتصفية جانبية إذا لزم الأمر.

الإنتاج — Qwen3 وGPT-OSS

func generateQwen3() error {
	endpoint := "http://localhost:11434/api/generate"
	req := GenerateRequest{
		Model:  "qwen3:4b-thinking",
		Prompt: "في 2–3 جمل، ما هي استخدامات B-Trees في قواعد البيانات؟",
		Think:  bptr(true),
	}
	raw, err := httpPostJSON(endpoint, req)
	if err != nil {
		return err
	}
	var out GenerateResponse
	if err := json.Unmarshal(raw, &out); err != nil {
		return err
	}
	if out.Thinking != "" {
		fmt.Println("🧠 التفكير:\n", out.Thinking)
	}
	fmt.Println("\n💬 الإجابة:\n", out.Response)
	return nil
}

func generateGptOss() error {
	endpoint := "http://localhost:11434/api/generate"
	req := GenerateRequest{
		Model:  "gpt-oss:20b",
		Prompt: "اذكر خوارزمية الانتشار العكسي في الشبكات العصبية بشكل مختصر.",
		Think:  bptr(true),
	}
	raw, err := httpPostJSON(endpoint, req)
	if err != nil {
		return err
	}
	var out GenerateResponse
	if err := json.Unmarshal(raw, &out); err != nil {
		return err
	}
	if out.Thinking != "" {
		fmt.Println("🧠 التفكير:\n", out.Thinking)
	}
	fmt.Println("\n💬 الإجابة:\n", out.Response)
	return nil
}

تأتي أشكال REST وسلوك التدفق مباشرة من مرجع واجهة Ollama API.


الجزء 2 — استدعاء Ollama عبر العميل الرسمي لـ Go (github.com/ollama/ollama/api)

تعرض الحزمة الرسمية Client مع وظائف تتوافق مع واجهة REST API. العميل CLI لـ Ollama نفسه يستخدم هذه الحزمة للتحدث مع الخدمة، مما يجعلها الخيار الأفضل لضمان التوافق.

التثبيت

go get github.com/ollama/ollama/api

المحادثة — Qwen3 (التفكير مفعل / غير مفعل)

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/ollama/ollama/api"
)

func chatWithQwen3Thinking(ctx context.Context, thinking bool) error {
	client, err := api.ClientFromEnvironment() // يحترم OLLAMA_HOST إذا تم تعيينه
	if err != nil {
		return err
	}

	req := &api.ChatRequest{
		Model: "qwen3:8b-thinking",
		// العديد من إصدارات الخادم تُعرض التفكير كعلم رئيسي؛
		// بالإضافة إلى ذلك، يمكنك التحكم في Qwen3 عبر /think أو /no_think في الرسائل.
		Think: api.Ptr(thinking),
		Messages: []api.Message{
			{Role: "system", Content: "أنت مساعد دقيق."},
			{Role: "user",   Content: "اذكر ترتيب الدمج مع مقتطف Go قصير."},
		},
	}

	var resp api.ChatResponse
	if err := client.Chat(ctx, req, &resp); err != nil {
		return err
	}

	if resp.Message.Thinking != "" {
		fmt.Println("🧠 التفكير:\n", resp.Message.Thinking)
	}
	fmt.Println("\n💬 الإجابة:\n", resp.Message.Content)
	return nil
}

func main() {
	ctx := context.Background()
	if err := chatWithQwen3Thinking(ctx, true); err != nil {
		log.Fatal(err)
	}
	// مثال: غير التفكير
	if err := chatWithQwen3Thinking(ctx, false); err != nil {
		log.Fatal(err)
	}
}

المحادثة — GPT-OSS (التعامل مع الاستنتاج بحذر)

func chatWithGptOss(ctx context.Context) error {
	client, err := api.ClientFromEnvironment()
	if err != nil {
		return err
	}
	req := &api.ChatRequest{
		Model: "gpt-oss:20b",
		Think: api.Ptr(true),
		Messages: []api.Message{
			{Role: "user", Content: "ما هو التخزين المؤقت وماذا يفيد؟"},
		},
	}
	var resp api.ChatResponse
	if err := client.Chat(ctx, req, &resp); err != nil {
		return err
	}
	// إذا كنت تخطط ل隱藏 الاستنتاج، فافعل ذلك هنا بغض النظر عن الأعلام.
	if resp.Message.Thinking != "" {
		fmt.Println("🧠 التفكير:\n", resp.Message.Thinking)
	}
	fmt.Println("\n💬 الإجابة:\n", resp.Message.Content)
	return nil
}

الإنتاج — Qwen3 وGPT-OSS

func generateWithQwen3(ctx context.Context) error {
	client, err := api.ClientFromEnvironment()
	if err != nil {
		return err
	}
	req := &api.GenerateRequest{
		Model:  "qwen3:4b-thinking",
		Prompt: "ملخص دور شجرة B في الفهرسة.",
		Think:  api.Ptr(true),
	}
	var resp api.GenerateResponse
	if err := client.Generate(ctx, req, &resp); err != nil {
		return err
	}
	if resp.Thinking != "" {
		fmt.Println("🧠 التفكير:\n", resp.Thinking)
	}
	fmt.Println("\n💬 الإجابة:\n", resp.Response)
	return nil
}

func generateWithGptOss(ctx context.Context) error {
	client, err := api.ClientFromEnvironment()
	if err != nil {
		return err
	}
	req := &api.GenerateRequest{
		Model:  "gpt-oss:20b",
		Prompt: "اذكر خوارزمية النزول التدرج في شبكات عصبية بشكل مبسط.",
		Think:  api.Ptr(true),
	}
	var resp api.GenerateResponse
	if err := client.Generate(ctx, req, &resp); err != nil {
		return err
	}
	if resp.Thinking != "" {
		fmt.Println("🧠 التفكير:\n", resp.Thinking)
	}
	fmt.Println("\n💬 الإجابة:\n", resp.Response)
	return nil
}

تتوافق سطح الحزمة الرسمية مع وثائق REST وتتم تحديثها مع المشروع الأساسي.


الاستجابات التدفقية

للحصول على استجابات في الوقت الفعلي، قم بتعيين Stream: bptr(true) في طلبك. سيتم تسليم الاستجابة كقطع JSON مفصولة بسطر جديد:

func streamChatExample() error {
	endpoint := "http://localhost:11434/api/chat"
	req := ChatRequest{
		Model:  "qwen3:8b-thinking",
		Think:  bptr(true),
		Stream: bptr(true), // تفعيل التدفق
		Messages: []ChatMessage{
			{Role: "user", Content: "اذكر خوارزمية الترتيب السريع خطوة بخطوة."},
		},
	}

	body, _ := json.Marshal(req)
	resp, err := http.Post(endpoint, "application/json", bytes.NewReader(body))
	if err != nil {
		return err
	}
	defer resp.Body.Close()

	decoder := json.NewDecoder(resp.Body)
	for {
		var chunk ChatResponse
		if err := decoder.Decode(&chunk); err == io.EOF {
			break
		} else if err != nil {
			return err
		}
		
		// معالجة التفكير والمحتوى عند وصولها
		if chunk.Message.Thinking != "" {
			fmt.Print(chunk.Message.Thinking)
		}
		fmt.Print(chunk.Message.Content)
		
		if chunk.Done {
			break
		}
	}
	return nil
}

مع الحزمة الرسمية، استخدم دالة رد فعل لمعالجة قطع التدفق:

func streamWithOfficialSDK(ctx context.Context) error {
	client, _ := api.ClientFromEnvironment()
	
	req := &api.ChatRequest{
		Model: "qwen3:8b-thinking",
		Think: api.Ptr(true),
		Messages: []api.Message{
			{Role: "user", Content: "اذكر شجرة البحث الثنائية."},
		},
	}
	
	err := client.Chat(ctx, req, func(resp api.ChatResponse) error {
		if resp.Message.Thinking != "" {
			fmt.Print(resp.Message.Thinking)
		}
		fmt.Print(resp.Message.Content)
		return nil
	})
	
	return err
}

العمل مع Qwen3 التفكير مقابل غير التفكير (الإرشادات العملية)

  • مفتاحان:

    1. علم boolean thinking مدعوم من ميزة التفكير في Ollama؛ و
    2. مفتاح تبديل ناعم /think و/no_think في آخر رسالة النظام / المستخدم في Qwen3. الأمر الأخير يحكم الدور التالي (أو الدورات).
  • وضع الافتراضي: غير التفكير للردود السريعة؛ ارتفع إلى التفكير للمهام التي تحتاج إلى استنتاج خطوة بخطوة (الرياضيات، التخطيط، التصحيح، تحليل الكود المعقد).

  • واجهات المستخدم التدفقية: عند تمكين التفكير، قد ترى تداخلًا بين الاستنتاج والمحتوى في الإطارات المتدفقة — اخزنها أو عرضها بشكل منفصل وقدم للمستخدم مفتاح “عرض الاستنتاج”. (انظر وثائق API لتنسيق التدفق.)

  • محادثات متعددة الدورات: Qwen3 تذكر وضع التفكير من الدورات السابقة. إذا كنت ترغب في تبديلها في منتصف المحادثة، استخدم كل من العلم والتعليم التبديل الناعم للحصول على موثوقية.

ملاحظات لـ GPT-OSS

  • عامل على أن الاستنتاج موجود حتى إذا حاولت تعطيله؛ فلتر على الجانب العميل إذا لم يجب أن يظهر في واجهتك.
  • لتطبيقات الإنتاج التي تستخدم GPT-OSS، قم بتنفيذ منطق تصفية جانبية يمكنه اكتشاف وحذف أنماط الاستنتاج إذا لزم الأمر.
  • اختبر نموذج GPT-OSS الخاص بك تمامًا، حيث قد تختلف السلوك بين الإصدارات المختلفة والكميات.

أفضل الممارسات والنصائح للإنتاج

معالجة الأخطاء والوقت المحدد

قم دائمًا بتنفيذ معالجة الوقت المحدد المناسبة ومعالجة الأخطاء:

func robustChatRequest(ctx context.Context, model string, messages []api.Message) (*api.ChatResponse, error) {
	// ضع وقتًا معقولًا
	ctx, cancel := context.WithTimeout(ctx, 2*time.Minute)
	defer cancel()
	
	client, err := api.ClientFromEnvironment()
	if err != nil {
		return nil, fmt.Errorf("إنشاء العميل: %w", err)
	}
	
	req := &api.ChatRequest{
		Model:    model,
		Messages: messages,
		Options: map[string]interface{}{
			"temperature": 0.7,
			"num_ctx":     4096, // حجم نافذة السياق
		},
	}
	
	var resp api.ChatResponse
	if err := client.Chat(ctx, req, &resp); err != nil {
		return nil, fmt.Errorf("فشل طلب المحادثة: %w", err)
	}
	
	return &resp, nil
}

تجميع الاتصالات وإعادة استخدامها

اعادة استخدام عميل Ollama عبر الطلبات بدلًا من إنشاء واحد جديد كل مرة:

type OllamaService struct {
	client *api.Client
}

func NewOllamaService() (*OllamaService, error) {
	client, err := api.ClientFromEnvironment()
	if err != nil {
		return nil, err
	}
	return &OllamaService{client: client}, nil
}

func (s *OllamaService) Chat(ctx context.Context, req *api.ChatRequest) (*api.ChatResponse, error) {
	var resp api.ChatResponse
	if err := s.client.Chat(ctx, req, &resp); err != nil {
		return nil, err
	}
	return &resp, nil
}

تكوين البيئة

استخدم المتغيرات البيئية للاستبدال المرن:

export OLLAMA_HOST=http://localhost:11434
export OLLAMA_NUM_PARALLEL=2
export OLLAMA_MAX_LOADED_MODELS=2

الحزمة الرسمية تُحترم تلقائيًا OLLAMA_HOST عبر api.ClientFromEnvironment().

المراقبة والتسجيل

قم بتنفيذ تسجيل منظم لنظام الإنتاج:

func loggedChat(ctx context.Context, logger *log.Logger, req *api.ChatRequest) error {
	start := time.Now()
	client, _ := api.ClientFromEnvironment()
	
	var resp api.ChatResponse
	err := client.Chat(ctx, req, &resp)
	
	duration := time.Since(start)
	logger.Printf("model=%s duration=%v error=%v tokens=%d", 
		req.Model, duration, err, len(resp.Message.Content))
	
	return err
}

الخاتمة

  • للمشاريع Go، github.com/ollama/ollama/api هو الخيار الأكثر كمالًا ومستعدًا للإنتاج. يتم الحفاظ عليه مع مشروع Ollama الأساسي، ويتم استخدامه من قبل CLI الرسمي، ويقدم تغطية API شاملة مع ضمان التوافق.

  • للمجرات الأعلى مستوى، فكر في LangChainGo عندما تحتاج إلى سلاسل، أدوات، مخازن المتجهات، وخطوط أنابيب RAG — على الرغم من أنك ستتنازل عن بعض التحكم في المستوى المنخفض مقابل الراحة.

  • Qwen3 يمنحك تحكمًا نظيفًا وموثوقًا في وضع التفكير مع كل من الأعلام والتبديلات في مستوى الرسائل (/think، /no_think)، مما يجعله مثاليًا للتطبيقات التي تحتاج إلى استجابات سريعة وعمق التفكير.

  • لـ GPT-OSS، خطط دائمًا لـ تطهير مخرجات التفكير من جانب العميل عند الحاجة، حيث قد لا يتم الاحترام بشكل متسق علم تعطيل التفكير.

  • في الإنتاج، قم بتنفيذ معالجة الأخطاء، تجميع الاتصالات، والوقت المحدد، والمراقبة لبناء تطبيقات قوية مدعومة بـ Ollama.

تجمع Go بين التصيغ القوي، دعم المتزامنة الممتاز، وواجهة Ollama البسيطة، مما يجعلها مثالية لبناء تطبيقات مدعومة بالذكاء الاصطناعي — من الروبوتات البسيطة إلى أنظمة RAG المعقدة.

الملاحظات الرئيسية

هنا ملخص سريع لاختيار منهجك:

حالة الاستخدام المنهج الموصى به لماذا
تطبيق إنتاج github.com/ollama/ollama/api دعم رسمي، تغطية API كاملة، مُدار مع المشروع الأساسي
أنابيب RAG / سلاسل / أدوات LangChainGo إجراءات مستوى عالٍ، تكامل مع مخازن المتجهات
التعلم / التجريب REST مباشر مع net/http شفافية كاملة، لا تعتمد، تعليمية
النمو السريع SDK الرسمي توازن بين البساطة والقوة
واجهة محادثة تدفقية SDK الرسمي مع ردود فعل دعم تدفق مدمج، واجهة نظيفة

إرشادات اختيار النموذج:

  • Qwen3: الأفضل للتطبيقات التي تحتاج إلى تحكم في وضع التفكير، محادثات متعددة الدورات موثوقة
  • GPT-OSS: أداء قوي ولكن يتطلب معالجة دفاعية لمخرجات التفكير / الاستنتاج
  • نماذج أخرى: اختبر تمامًا؛ سلوك التفكير يختلف حسب عائلة النموذج

المراجع والمزيد من القراءة

الوثائق الرسمية

بدائل SDK لـ Go

الموارد الخاصة بالنموذج

المواضيع المرتبطة

روابط مفيدة أخرى