openaigo
1.0.0
api.openai.com的另一个API客户端。
该图书馆是社区维护的,没有由Openai正式支持。
package main
import (
"context"
"fmt"
"os"
"github.com/otiai10/openaigo"
)
func main () {
client := openaigo . NewClient ( os . Getenv ( "OPENAI_API_KEY" ))
request := openaigo. ChatRequest {
Model : "gpt-4o" ,
Messages : []openaigo. Message {
{ Role : "user" , Content : "Hello!" },
},
}
ctx := context . Background ()
response , err := client . Chat ( ctx , request )
fmt . Println ( response , err )
}如果您只想尝试,请点击下面的命令。
git clone https://github.com/otiai10/openaigo.git
cd openaigo
OPENAI_API_KEY=YourAPIKey go run ./testapp/main.go请参见测试应用程序作为工作示例。
访问https://beta.openai.com/account/api-keys,您可以创建自己的API键免费入门。
function_call ? request := openaigo. ChatRequest {
Messages : []openaigo. Message {
{ Role : "user" , Content : "How's the weather today in Tokyo?" },
},
Functions : []openaigo. Function {
{
Name : "get_weather" ,
Parameters : openaigo. Parameters {
Type : "object" ,
Properties : map [ string ] map [ string ] any {
"location" : { "type" : "string" },
"date" : { "type" : "string" , "description" : "ISO 8601 date string" },
},
Required : [] string { "location" },
},
}
},
}如果您想要速记,请使用functioncall 。
import fc "github.com/otiai10/openaigo/functioncall"
request . Functions = fc. Funcs {
"get_weather" : { GetWeather , "Get weather of the location" , fc. Params {
{ "location" , "string" , "location of the weather" , true },
{ "date" , "string" , "ISO 8601 date string" , true },
}},
}请参见测试应用程序作为工作示例。
stream吗? client := openaigo . NewClient ( OPENAI_API_KEY )
request := openaigo. ChatRequest {
Stream : true ,
StreamCallback : func ( res ChatCompletionResponse , done bool , err error ) {
// Do what you want!
// You might need chan handling here.
// See test app how you can do it.
// https://github.com/otiai10/openaigo/search?q=chat_completion_stream
},
} client := openaigo . NewClient ( OPENAI_API_KEY )
// You can set whatever you want
transport := & http. Transport { Proxy : http . ProxyFromEnvironment }
client . HTTPClient = & http. Client { Transport : transport }
// Done!欢迎这里报告任何问题或任何反馈。