快速入门 Golang 注意 1. golang版本要求1.18以上。 2. go.mod引用相关类库 go get 。 文本生成 java package main import ( "context" "fmt" openai "github.com/sashabaranov/goopenai" // 统一使用这个库 ) func main() { baseUrl : " // api前缀地址 appkey : "yourappkey" // 替换成自己的App Key modelId : "xirangmodelid" // 替换成自己要用的模型 prompt : "你是谁" // 对话问题 // 创建自定义配置 config : openai.DefaultConfig(appkey) config.BaseURL baseUrl // 使用配置创建客户端 client : openai.NewClientWithConfig(config) // 构建请求参数 resp, err : client.CreateChatCompletion( context.Background(), openai.ChatCompletionRequest{ Model: modelId, Messages: []openai.ChatCompletionMessage{ { Role: openai.ChatMessageRoleUser, Content: prompt, }, }, }, ) if err ! nil { panic(err) } // 打印模型输出 fmt.Println(resp.Choices[0].Message.Content) } 图像理解 java package main import ( "bytes" "crypto/tls" "encoding/json" "fmt" "io/ioutil" "net/http" ) func main() { url : " apiKey : "yourappkey" // 替换为自己的App key modelId : "xirangmodelid" // 替换为实际的model Id // 创建不验证证书的 HTTP 客户端 tr : &http.Transport{ TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, } client : &http.Client{Transport: tr} // 构建请求负载 payload : map[string]interface{}{ "model": modelId, "messages": []map[string]interface{}{ { "role": "user", "content": []map[string]interface{}{ { "type": "text", "text": "描述下这张图", }, { "type": "imageurl", "imageurl": map[string]interface{}{ "url": " }, }, }, }, }, "streamoptions": map[string]interface{}{ "includeusage": true, }, "paralleltoolcalls": true, "stream": false, } // 将负载转换为 JSON jsonPayload, err : json.Marshal(payload) if err ! nil { fmt.Printf("JSON 编码错误: %vn", err) return } // 创建请求 req, err : http.NewRequest("POST", url, bytes.NewBuffer(jsonPayload)) if err ! nil { fmt.Printf("创建请求错误: %vn", err) return } // 设置请求头 req.Header.Set("Authorization", "Bearer "+apiKey) req.Header.Set("ContentType", "application/json") // 发送请求 resp, err : client.Do(req) if err ! nil { fmt.Printf("请求发送错误: %vn", err) return } defer resp.Body.Close() // 读取响应 body, err : ioutil.ReadAll(resp.Body) if err ! nil { fmt.Printf("读取响应错误: %vn", err) return } // 检查状态码 if resp.StatusCode > 200 && resp.StatusCode 'a' && r 'A' && r '0' && r 50 { safePrompt safePrompt[:50] } filename : fmt.Sprintf("%s%d.png", safePrompt, time.Now().Unix()) filepath : filepath.Join(outputDir, filename) // 保存图像 if err : ioutil.WriteFile(filepath, imgData, 0644); err ! nil { return "", fmt.Errorf("保存文件失败: %v", err) } return filepath, nil } func main() { apiKey : "yourappkey" // 替换为实际的app key modelId : "xirangmodelid" // 替换为实际的modelId outputDir : "images" size : "1024x1024" prompt : "一只戴帽子的可爱小海獭" filepath, err : generateImage(prompt, apiKey, modelId, outputDir, size) if err ! nil { log.Fatalf("错误: %v", err) } log.Printf("图像已保存至: %s", filepath) } embedding文本向量化 java package main import ( "context" "fmt" openai "github.com/sashabaranov/goopenai" ) func main() { baseUrl : " // API前缀地址 appkey : "yourappkey" // 替换成自己的App Key modelId : "xirangmodelid" // 替换成实际的模型ID text : "测试文本" // 需要生成嵌入向量的文本 // 创建自定义配置 config : openai.DefaultConfig(appkey) config.BaseURL baseUrl // 创建客户端 client : openai.NewClientWithConfig(config) // 构建Embedding请求 resp, err : client.CreateEmbeddings( context.Background(), openai.EmbeddingRequest{ Model: openai.EmbeddingModel(modelId), Input: []string{text}, // 注意Input是字符串切片 }, ) if err ! nil { panic(err) } // 打印结果 fmt.Printf("嵌入向量维度: %dn", len(resp.Data[0].Embedding)) fmt.Printf("前5个向量值: %vn", resp.Data[0].Embedding[:5]) fmt.Printf("使用令牌数: %dn", resp.Usage.TotalTokens) } rerank 重排序 java package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "net/http" ) func main() { apiURL : " apiKey : "yourappkey" // 替换成自己的App Key modelID : "xirangmodelid" //替换成实际的modelId // 请求数据 requestData : map[string]interface{}{ "query": "Python教程", "documents": []string{"Python基础语法", "Python高级特性", "Java编程入门"}, "model": modelID, "topn": 2, } // 编码为 JSON jsonData, : json.Marshal(requestData) // 创建请求 req, : http.NewRequest("POST", apiURL, bytes.NewBuffer(jsonData)) req.Header.Set("Authorization", "Bearer "+apiKey) req.Header.Set("ContentType", "application/json") // 发送请求 client : &http.Client{} resp, err : client.Do(req) if err ! nil { fmt.Printf("请求失败: %v", err) return } defer resp.Body.Close() // 读取响应 body, : ioutil.ReadAll(resp.Body) // 解析结果 var result map[string]interface{} if err : json.Unmarshal(body, &result); err ! nil { fmt.Printf("解析结果失败: %v", err) return } // 打印结果 fmt.Printf("查询: '%s'n", requestData["query"]) fmt.Println("返回结果:") if results, ok : result["results"].([]interface{}); ok { for i, item : range results { doc : item.(map[string]interface{}) fmt.Printf("%d. [得分: %.4f] %sn", i+1, doc["relevancescore"].(float64), requestData["documents"].([]string)[int(doc["index"].(float64))], ) } } else { fmt.Println("无效的响应格式") } }