تطبيق Golang الأصلي للتفاعل بسهولة مع OpenAI API.
https://beta.openai.com/docs/api-reference/
يمكنك استخدام متغير البيئة لتخزين مفتاح API السري
export OPENAI_KEY=[YOUR_KEY]
لتهيئة المحرك، استخدم هذا:
e := openai . New ( os . Getenv ( "OPENAI_KEY" ))
إذا كنت تريد استخدام أقوى نموذج لإنشاء مخرجات نصية، فتأكد من أنك تستخدم "text-davinci-003". يتم تعريف هذا النموذج على أنه openai.ModelTextDavinci003
ثابت.
يمكنك استخدام الحزمة Completion+Edit لإعادة إنشاء الاستجابة بناءً على السياق الأخير.
e := openai . New ( os . Getenv ( "OPENAI_KEY" ))
ctx := context . Background ()
completionResp , err := e . Completion ( ctx , & openai. CompletionOptions {
// Choose model, you can see list of available models in models.go file
Model : openai . ModelTextDavinci001 ,
// Number of completion tokens to generate response. By default - 1024
MaxTokens : 1200 ,
// Text to completion
Prompt : [] string { "Write a little bit of Wikipedia. What is that?" },
})
editResp , err := e . Edit ( ctx , & EditOptions {
Model : ModelTextDavinci001 ,
Input : completionResp . Choices [ 0 ],
Instruction : "Please rewrite a bit more and add more information about Wikipedia in different aspects. Please build based on that for 4 topics" ,
})
عند إعطاء مطالبة، سيُرجع النموذج واحدًا أو أكثر من الإكمالات المتوقعة.
ملاحظة : العدد الافتراضي لرموز الإكمال هو 1024، إذا كنت تريد زيادة هذا الحد أو تقليله، فيجب عليك تغيير معلمة MaxTokens
.
e := openai . New ( os . Getenv ( "OPENAI_KEY" ))
r , err := e . Completion ( context . Background (), & openai. CompletionOptions {
// Choose model, you can see list of available models in models.go file
Model : openai . ModelTextDavinci001 ,
// Number of completion tokens to generate response. By default - 1024
MaxTokens : 1200 ,
// Text to completion
Prompt : [] string { "Write a little bit of Wikipedia. What is that?" },
})
سوف تحصل على الناتج التالي:
{
"id" : " cmpl-6SrcYDLCVT7xyHKVNuSLNuhRvwOJ1 " ,
"object" : " text_completion " ,
"created" : 1672337322 ,
"model" : " text-davinci-001 " ,
"choices" : [
{
"text" : " nn Wikipedia is a free online encyclopedia, created and edited by volunteers. " ,
"index" : 0 ,
"finish_reason" : " stop "
}
],
"usage" : {
"prompt_tokens" : 11 ,
"completion_tokens" : 15 ,
"total_tokens" : 26
}
}
للحصول على النص فقط يجب عليك استخدام الكود التالي:
fmt . Println ( r . Choices [ 0 ]. Text )
وبالتالي فإن الكود الكامل سيكون:
package main
import (
"context"
"encoding/json"
"log"
"os"
"testing"
"github.com/0x9ef/openai-go"
)
func main () {
e := openai . New ( os . Getenv ( "OPENAI_KEY" ))
r , err := e . Completion ( context . Background (), & openai. CompletionOptions {
// Choose model, you can see list of available models in models.go file
Model : openai . ModelTextDavinci001 ,
// Text to completion
Prompt : [] string { "Write a little bit of Wikipedia. What is that?" },
})
if b , err := json . MarshalIndent ( r , "" , " " ); err != nil {
panic ( err )
} else {
fmt . Println ( string ( b ))
}
// Wikipedia is a free online encyclopedia, created and edited by volunteers.
fmt . Println ( "What is the Wikipedia?" , r . Choices [ 0 ]. Text )
}
يسرد النماذج المتوفرة حاليًا، ويوفر معلومات أساسية عن كل منها مثل المالك ومدى التوفر.
e := openai . New ( os . Getenv ( "OPENAI_KEY" ))
r , err := e . ListModels ( context . Background ())
if err != nil {
log . Fatal ( err )
}
سوف تحصل على الناتج التالي:
{
"data" : [
{
"id" : " babbage " ,
"object" : " model " ,
"owned_by" : " openai "
},
{
"id" : " ada " ,
"object" : " model " ,
"owned_by" : " openai "
},
{
"id" : " text-davinci-002 " ,
"object" : " model " ,
"owned_by" : " openai "
},
{
"id" : " davinci " ,
"object" : " model " ,
"owned_by" : " openai "
},
...
]
}
لاسترداد معلومات حول النموذج المحدد بدلاً من كافة النماذج، يمكنك القيام بذلك:
e := openai . New ( os . Getenv ( "OPENAI_KEY" ))
r , err := e . RetrieveModel ( context . Background (), & openai. RetrieveModelOptions {
ID : openai . ModelDavinci ,
})
if err != nil {
log . Fatal ( err )
}
معهد ماساتشوستس للتكنولوجيا