v1/chat/completions/

v1/chat/completions/

توجه
در نظر داشته باشید که Gilas APIs از لحاظ فنی و نحوه کارکرد و قابلیت‌ها کاملا شبیه OpenAI APIs هستند. به همین منظور پیشنهاد میکنیم که برای آگاهی از نحوه‌ی کارکرد API ها به مستندات OpenAI API Reference و OpenAI Documentation ارجاع کنید.

مدل‌های تولید متن قابل دسترس از طریق Gilas API توانایی درک زبان طبیعی و کدنویسی را دارند. این مدل‌ها به ورودی‌های خود با خروجی‌های متنی که بسیار شبیه به جواب‌های انسانی هستند پاسخ می‌دهند. ورودی‌های این مدل‌ها همچنین به عنوان “prompt” شناخته می‌شوند. طراحی یک پرامپت اساساً چگونگی “برنامه‌ریزی” یک مدل زبانی بزرگ است.

شما می‌توانید با استفاده از این مدل‌ها برنامه‌هایی بسازید که توانایی انجام کارهای زیر را دارند:

  • پیش‌نویس اسناد
  • نوشتن کد کامپیوتری
  • پاسخ به سوالات درباره پایگاه داده‌های متنی
  • تحلیل متون
  • ارائه رابط زبان طبیعی
  • تعلیم علوم مختلف به زبان انسانی
  • ترجمه زبان‌های مختلف
  • شبیه‌سازی شخصیت‌ها برای بازی‌های کامپیوتری

برای استفاده از این مدل‌ها کافی است که یک درخواست شامل ورودی‌ها و کلید API خود را به اندپوینت مناسب ارسال کنید.

Chat Completions API #

مدل‌های تولید متن لیستی از پیام‌ها را به عنوان ورودی دریافت کرده و یک پیام تولید شده توسط مدل را به عنوان خروجی ارائه می‌دهند. اگرچه اندپویت چت برای ایجاد گفتگوهای چند مرحله‌ای طراحی شده است، اما از این اندپوینت برای انجام وظایف تک‌ مرحله‌ای بدون هیچ گفتگویی نیز می‌توان استفاده کرد.

نمونه‌ای از فواخوانی APIی چت را در زیر مشاهده کنید:

 1curl https://api.gilas.io/v1/chat/completions  \
 2-H "Content-Type: application/json" \
 3-H "Authorization: Bearer $GILAS_API_KEY" \
 4-d '{
 5    "model": "gpt-3.5-turbo",
 6    "messages": [
 7      {
 8        "role": "system",
 9        "content": "You are a helpful assistant."
10      },
11      {
12        "role": "user",
13        "content": "Who won the world series in 2020?"
14      },
15      {
16        "role": "assistant",
17        "content": "The Los Angeles Dodgers won the World Series in 2020."
18      },
19      {
20        "role": "user",
21        "content": "Where was it played?"
22      }
23    ]
24  }'
 1package main
 2
 3import (
 4	"bytes"
 5	"encoding/json"
 6	"fmt"
 7	"io/ioutil"
 8	"net/http"
 9	"os"
10)
11
12func main() {
13	url := "https://api.gilas.io/v1/chat/completions"
14	payload := map[string]interface{}{
15		"model": "gpt-3.5-turbo",
16		"messages": []map[string]string{
17			{
18				"role":    "system",
19				"content": "You are a helpful assistant.",
20			},
21			{
22				"role":    "user",
23				"content": "Who won the world series in 2020?",
24			},
25			{
26				"role":    "assistant",
27				"content": "The Los Angeles Dodgers won the World Series in 2020.",
28			},
29			{
30				"role":    "user",
31				"content": "Where was it played?",
32			},
33		},
34	}
35
36	jsonPayload, _ := json.Marshal(payload)
37	req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonPayload))
38	req.Header.Set("Content-Type", "application/json")
39	req.Header.Set("Authorization", "Bearer "+os.Getenv("GILAS_API_KEY"))
40
41	client := &http.Client{}
42	resp, _ := client.Do(req)
43	defer resp.Body.Close()
44
45	body, _ := ioutil.ReadAll(resp.Body)
46	fmt.Println(string(body))
47}
 1const axios = require('axios');
 2
 3async function makeRequest() {
 4    const url = 'https://api.gilas.io/v1/chat/completions';
 5    const payload = {
 6        model: 'gpt-3.5-turbo',
 7        "messages": [
 8            {
 9                "role": "system",
10                "content": "You are a helpful assistant."
11            },
12            {
13                "role": "user",
14                "content": "Who won the world series in 2020?"
15            },
16            {
17                "role": "assistant",
18                "content": "The Los Angeles Dodgers won the World Series in 2020."
19            },
20            {
21                "role": "user",
22                "content": "Where was it played?"
23            }
24        ]
25    };
26
27    try {
28        const response = await axios.post(url, payload, {
29            headers: {
30                'Content-Type': 'application/json',
31                'Authorization': `Bearer ${process.env.GILAS_API_KEY}`
32            }
33        });
34        console.log(response.data);
35    } catch (error) {
36        console.error('Error making the request:', error);
37    }
38}
39
40makeRequest();
 1import requests
 2import os
 3
 4def make_request():
 5    url = 'https://api.gilas.io/v1/chat/completions'
 6    headers = {
 7        'Content-Type': 'application/json',
 8        'Authorization': f'Bearer {os.getenv("GILAS_API_KEY")}'
 9    }
10    payload = {
11        'model': 'gpt-3.5-turbo',
12        "messages": [
13            {
14                "role": "system",
15                "content": "You are a helpful assistant."
16            },
17            {
18                "role": "user",
19                "content": "Who won the world series in 2020?"
20            },
21            {
22                "role": "assistant",
23                "content": "The Los Angeles Dodgers won the World Series in 2020."
24            },
25            {
26                "role": "user",
27                "content": "Where was it played?"
28            }
29        ]
30    }
31
32    response = requests.post(url, json=payload, headers=headers)
33    return response.json()
34
35if __name__ == "__main__":
36    result = make_request()
37    print(result)

ورودی اصلی در این فراخوان API پارامتر Messages است. Messages باید یک آرایه از شیء پیام باشند، جایی که هر شیء شامل role (با مقادیر “system”، “user” یا “assistant”) و content است. چت ها می‌توانند به عنوان یک پیام کوتاه یا چندین نوبت پشت سر هم قرار بگیرند.

به طور معمول، یک گفتگو با یک پیام سیستمی شروع می‌شود، سپس پیام‌های کاربر و دستیار به تناوب دنبال می‌شوند. پیام سیستمی به تنظیم رفتار assistant کمک می‌کند. به عنوان مثال، می‌توانید شخصیت assistant را تغییر دهید یا دستورالعمل‌های خاصی را در مورد چگونگی رفتار آن در طول گفتگو ارائه دهید. با این حال توجه داشته باشید که پیام سیستمی اختیاری است.

پیام‌های کاربر درخواست‌ها یا نظراتی را به assistant برای دریافت پاسخ فراهم می‌کنند. پیام‌های assistant پاسخ‌های قبلی assistant را ذخیره می‌کنند، اما همچنین می‌توانند توسط شما نوشته شوند تا نمونه‌های رفتار مورد نیاز را شبیه‌سازی کنند.

زمانی که دستورالعمل‌های کاربر به پیام‌های قبلی ارجاع می‌دهند قرار دادن تاریخچه مکالمه در لیست Messages مهم است. در مثال بالا، سوال نهایی کاربر در مورد “?Where was is played“ تنها در کانتکست پیام‌های قبلی در مورد سری جهانی 2020 معنی دارد. از آنجا که مدل‌ها stateless هستند و درخواست‌های قبلی را ذخیره نمی‌کنند، تمام اطلاعات مربوطه باید به عنوان بخشی از تاریخچه گفتگو در هر درخواست فراهم شود. اگر طول Messages نتواند در محدودیت توکن مدل جا بگیرد، باید به شکلی کوتاه شود.

Chat Completions response format #

 نمونه از فرمت پاسخ Chat Completions API در زیر آمده است:

 1{
 2  "choices": [
 3    {
 4      "finish_reason": "stop",
 5      "index": 0,
 6      "message": {
 7        "content": "The 2020 World Series was played in Texas at Globe Life Field in Arlington.",
 8        "role": "assistant"
 9      },
10      "logprobs": null
11    }
12  ],
13  "created": 1677664795,
14  "id": "chatcmpl-7QyqpwdfhqwajicIEznoc6Q47XAyW",
15  "model": "gpt-3.5-turbo-0613",
16  "object": "chat.completion",
17  "usage": {
18    "completion_tokens": 17,
19    "prompt_tokens": 57,
20    "total_tokens": 74
21  }
22}

 پاسخ assistant در مسیر choices[0].message.content قرار دارد.

برای آگاهی کامل از قابلیت‌های Chat Completions API لطفا مستندات وب‌سایت OpenAI را مطالعه کنید.

همچنین OpenAI API Reference شامل مستندات مربوط به Chat Completions API می‌باشد که مطالعه آنها برای استفاده از این اندپوینت بسیار اهمیت دارد.