@@ -27,6 +27,7 @@ const (
2727var (
2828 key = os .Getenv ("OPENAI_API_KEY" )
2929 url = os .Getenv ("OPENAI_URL" )
30+ azureModel = os .Getenv ("OPENAI_AZURE_DEPLOYMENT" )
3031 completionID int64
3132)
3233
@@ -80,6 +81,15 @@ func complete(opts ...Options) (result Options, err error) {
8081 return result , err
8182}
8283
84+ func AzureMapperFunction (model string ) string {
85+ if azureModel == "" {
86+ return model
87+ }
88+ return map [string ]string {
89+ openai .GPT4TurboPreview : azureModel ,
90+ }[model ]
91+ }
92+
8393func NewClient (opts ... Options ) (* Client , error ) {
8494 opt , err := complete (opts ... )
8595 if err != nil {
@@ -89,6 +99,7 @@ func NewClient(opts ...Options) (*Client, error) {
8999 cfg := openai .DefaultConfig (opt .APIKey )
90100 if strings .Contains (string (opt .APIType ), "AZURE" ) {
91101 cfg = openai .DefaultAzureConfig (key , url )
102+ cfg .AzureModelMapperFunc = AzureMapperFunction
92103 }
93104
94105 cfg .BaseURL = types .FirstSet (opt .BaseURL , cfg .BaseURL )
@@ -236,15 +247,16 @@ func (c *Client) Call(ctx context.Context, messageRequest types.CompletionReques
236247 }
237248
238249 request := openai.ChatCompletionRequest {
239- Model : messageRequest .Model ,
240- Messages : msgs ,
241- MaxTokens : messageRequest .MaxTokens ,
242- Temperature : messageRequest .Temperature ,
243- Grammar : messageRequest .Grammar ,
250+ Model : messageRequest .Model ,
251+ Messages : msgs ,
252+ MaxTokens : messageRequest .MaxTokens ,
244253 }
245254
246- if request .Temperature == nil {
247- request .Temperature = new (float32 )
255+ if messageRequest .Temperature == nil {
256+ // this is a hack because the field is marked as omitempty, so we need it to be set to a non-zero value but arbitrarily small
257+ request .Temperature = 1e-08
258+ } else {
259+ request .Temperature = * messageRequest .Temperature
248260 }
249261
250262 if messageRequest .JSONResponse {
@@ -260,7 +272,7 @@ func (c *Client) Call(ctx context.Context, messageRequest types.CompletionReques
260272 }
261273 request .Tools = append (request .Tools , openai.Tool {
262274 Type : openai .ToolTypeFunction ,
263- Function : openai.FunctionDefinition {
275+ Function : & openai.FunctionDefinition {
264276 Name : tool .Function .Name ,
265277 Description : tool .Function .Description ,
266278 Parameters : params ,
0 commit comments