openai.api_key = "YOUR_API_KEY"
response = openai.Completion.create(
engine="text-davinci-003",
prompt="請介紹一下人工智能的發展歷程",
max_tokens=500
)
print(response.choices[0].text)

在這段代碼中,我們先導入 openai 庫,接著設置之前獲取的 API 密鑰,然后指定使用 “text-davinci-003” 模型,并給出提示文本 “請介紹一下人工智能的發展歷程”,最后獲取并打印出模型生成的回答。如此一來,便能快速借助 OpenAI 的強大能力,滿足文本生成需求。

package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
)
const OPENAI_API_URL = "https://api.openai.com/v1/chat/completions"
func main() {
apiKey := os.Getenv("OPENAI_API_KEY")
requestBody, err := json.Marshal(map[string]interface{}{
"model": "gpt-3.5-turbo",
"messages": []map[string]string{
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "講個有趣的故事"},
},
})
if err!= nil {
panic(err)
}
req, err := http.NewRequest("POST", OPENAI_API_URL, bytes.NewBuffer(requestBody))
if err!= nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err!= nil {
panic(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err!= nil {
panic(err)
}
fmt.Println("Response from OpenAI:")
fmt.Println(string(body))
}

這段代碼清晰地展示了 Go 語言如何構建請求、設置請求頭并發送 POST 請求到 openai接口,最終獲取并打印響應結果,為Go

開發者提供了簡潔明了的調用范例。

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class OpenAIClient {
private static final String API_KEY = "YOUR_API_KEY";
private static final String API_URL = "https://api.openai.com/v1/chat/completions";
public static void main(String[] args) throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(API_URL);
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("Authorization", "Bearer " + API_KEY);
String requestBody = "{\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"user\",\"content\":\"描述一下未來的城市生活\"}]}";
httpPost.setEntity(new StringEntity(requestBody));
CloseableHttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
String responseBody = EntityUtils.toString(entity);
System.out.println(responseBody);
response.close();
httpClient.close();
}
}

上述 Java 代碼通過構建 HttpPost 請求,設置必要的請求頭和請求體,向 OpenAI 接口發起請求,并將返回的響應結果進行打印輸出,助力 Java 開發者順利接入 OpenAI 服務。

const { Configuration, OpenAIApi } = require('openai');
const configuration = new Configuration({
apiKey: 'YOUR_API_KEY',
});
const openai = new OpenAIApi(configuration);
async function run() {
const response = await openai.createCompletion({
model: 'text-davinci-003',
prompt: '寫一首關于春天的詩',
max_tokens: 300
});
console.log(response.data.choices[0].text);
}
run();

在這段 Node.js 代碼中,我們先配置好 API 密鑰,然后利用 openai 庫提供的方法構建請求,異步獲取模型生成的關于春天的詩,并將其打印展示,為 Node.js 開發者提供了便捷的調用方式。

三、設置公共 API 的本地代理

(一)為何需要本地代理

在探索 OpenAI 接口的征程中,不少開發者會遇到網絡訪問受限的困擾。由于一些地區的網絡策略、防火墻設置等因素,直接訪問 OpenAI 的官方公共 API 可能會受阻。此時,設置本地代理就如同搭建一座橋梁,巧妙地繞過這些障礙,讓數據得以順暢流通。而且,本地代理還能優化網絡路徑,減少延遲,顯著提升訪問速度,確保與 OpenAI 接口的交互高效穩定,為開發者節省寶貴的時間,避免因網絡問題而陷入長時間的等待與調試。

(二)代理設置實操指南

以常見的 vue-cli 項目為例,讓我們深入了解如何進行代理設置。首先,找到項目根目錄下的 vue.config.js 文件,若沒有則新建一個。在該文件中,對 devServer 進行如下配置:

module.exports = {
devServer: {
proxy: {
'/api': { // 這里的'/api'是自定義的路徑匹配規則,你可以按需修改
target: 'https://api.openai.com', // 這是OpenAI的官方API地址,目標明確
changeOrigin: true, // 這個設置至關重要,它會改變請求頭中的host,讓代理服務器看起來就像目標服務器,有效規避跨域問題
pathRewrite: {
'^/api': '' // 這一步是路徑重寫,將本地的'/api'開頭的請求路徑重寫,去除'/api',使其與OpenAI的實際接口路徑完美匹配
}
}
}
}
}

完成上述配置后,記得重啟項目,讓設置生效。此后,項目中所有以 ‘/api’ 開頭的請求,都會被代理到OpenAI的官方 API,并且自動處理跨域問題,讓接口調用如絲般順滑。若在設置過程中遇到諸如配置不生效、代理后請求超時等問題,首先檢查網絡連接是否正常,確認代理服務器地址是否準確無誤;若依舊無法解決,可以在社區論壇、技術問答平臺尋求幫助,眾多開發者的經驗分享或許能助你一臂之力,快速突破困境。

四、接口撰寫說明:核心要點詳解

(一)認證方式

OpenAI采用 API 密鑰進行身份驗證,這是保障您請求合法性與安全性的關鍵防線。當您注冊并獲取 API 密鑰后,務必將其妥善保管,猶如守護珍貴的寶藏。絕不要在任何公開場合、客戶端代碼(如瀏覽器、應用程序前端)中泄露密鑰,以防不法分子盜用,造成不必要的損失。在實際操作中,生產請求應通過您自己的后端服務器進行路由轉發,此時,API 密鑰可從環境變量或專業的密鑰管理服務中安全加載,確保每一次請求都在嚴密的保護下進行。對于那些隸屬于多個組織的用戶,OpenAI 還提供了靈活的組織指定功能。您只需在請求時傳遞一個特定的表頭 “OpenAI-Organization”,并附上對應的組織 ID,即可明確指定本次 API 請求所歸屬的組織。如此一來,這些請求的使用量將精準計入指定組織的訂閱配額,方便您在多組織協作場景下合理管理資源。例如,使用 curl 命令時,您可這樣設置:

curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Organization: org-gth0C8mT2wnKealyCkSRrpQk"

在 Python 中,借助 openai 包,示例代碼如下:

import os
import openai
openai.organization = "org-gth0C8mT2wnKealyCkSRrpQk"
openai.api_key = os.getenv("OPENAI_API_KEY")
openai.Model.list()

而在 Node.js 環境下,相應代碼為:

import { Configuration, OpenAIApi } from "openai";
const configuration = new Configuration({
organization: "org-gth0C8mT2wnKealyCkSRrpQk",
apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
const response = await openai.listEngines();

通過這些方式,無論是哪種編程語言,您都能輕松駕馭多組織場景下的 API 請求。

(二)模型與端點

OpenAI平臺匯聚了眾多強大的模型,猶如璀璨星辰,各放異彩。其中,ChatGPT 系列模型以其卓越的對話交互能力備受矚目,如 GPT-3.5-turbo 模型,它不僅能在日常聊天場景中對答如流,提供精準、自然的回復,還針對傳統的文本補全任務進行了優化,無論是撰寫故事、回答專業問題,還是輔助文案創作,都表現出色;而 GPT-4 更是在復雜推理、知識理解等方面展現出超凡實力,能夠應對高難度的學術探討、技術難題求解等任務。此外,GPT-3 系列模型作為經典之作,在文本生成領域根基深厚,擁有廣泛的應用基礎。面對如此豐富的模型選擇,如何精準定位最適合項目需求的那一款呢?這就需要參考 OpenAI 提供的模型端點兼容性表,它如同精準的導航儀,清晰地標明了每個模型所支持的 API 端點、適用的任務類型以及各自的特性優勢。例如,若您致力于打造一款智能客服應用,追求高效的實時對話響應與精準的意圖理解,GPT-3.5-turbo 無疑是上乘之選;而倘若您的項目涉及專業學術研究、復雜的邏輯推理,需要模型具備深度的知識儲備與強大的分析能力,GPT-4 則能助您一臂之力。通過深入研究模型端點兼容性表,結合項目實際需求,您便能有的放矢,挑選出最契合的模型,為項目注入強大動力。

(三)請求參數詳解

在向 OpenAI 接口發起請求時,不同類型的請求對應著不同的參數設置,這些參數恰似精細的畫筆,能精準勾勒出您期望模型生成的內容輪廓。以 Chat Completions 請求為例,這是構建智能對話應用的核心請求類型,其中,“model” 參數必填,它明確指定了驅動對話的模型,如前文提及的 “gpt-3.5-turbo” 等,不同模型將帶來風格迥異的對話體驗;“messages” 參數同樣必填,它是一個數組,承載著對話的歷史消息,每個元素包含 “role”(角色,如 “system” 用于設定對話基調、“user” 代表用戶輸入、“assistant” 為模型回復)和 “content”(具體的消息內容),通過精心編排這些消息,您能引導模型生成貼合上下文的高質量回復。比如:

messages=[
{"role": "system", "content": "你是一個專業的科技知識助手"},
{"role": "user", "content": "請介紹一下量子計算的原理"}
]

在此示例中,系統消息設定了助手的專業領域,用戶消息則發起了具體的知識問詢,模型將依據此上下文給出專業解答。

而對于 Completions 請求,常用于一般性的文本生成任務。“model” 參數指定使用的模型,“prompt” 參數作為生成文本的起點,它可以是一個簡潔的問題、一段引導性的文字,甚至是一篇待續寫的短文片段。例如:

prompt = "在遙遠的未來,人類社會發生了巨大的變革,"

模型將依據此 prompt 展開想象,續寫后續的故事內容。

此外,還有一些通用且關鍵的參數,如 “temperature”,它取值在 0 到 2 之間,宛如調節創意與確定性的旋鈕。當設置為較低值,如 0.2 時,模型輸出將趨于保守、確定,更聚焦于常見、經典的回答,適合對準確性要求極高的場景,如專業知識問答;若調高至 0.8,模型則會釋放更多的創意,生成更加多樣化、富有想象力的內容,為創意寫作、頭腦風暴等場景帶來驚喜。再如 “max_tokens” 參數,它限定了模型生成文本的最大長度,合理設置此參數既能滿足需求,又能有效控制資源消耗,避免因生成過長文本而導致延遲或費用增加。通過巧妙運用這些參數,您將充分挖掘 OpenAI 接口的潛能,實現豐富多彩的文本生成效果。

五、最佳實踐:高效運用的秘訣

(一)提示詞工程優化

在與OpenAI接口交互的過程中,提示詞的編寫堪稱一門精妙藝術,直接關乎模型輸出的質量與效果。一條清晰、精準的提示詞,能讓模型宛如一位貼心助手,精準理解您的需求,給出令人滿意的回答;反之,模糊、籠統的提示則可能讓模型陷入迷茫,輸出不盡人意。編寫有效提示詞的核心技巧在于 “具體、明確、引導”。首先,指令前置是關鍵,將核心任務指令置于提示詞開頭,能讓模型迅速抓住重點。例如,把 “總結一下這篇科技文章” 改寫為 “總結:[附上科技文章內容]”,模型便能直奔主題,快速提煉關鍵信息。其次,內容務必具體,提供盡可能多的細節、背景信息,減少模型的猜測空間。比如,與其簡單要求 “寫一篇產品推廣文案”,不如詳細說明 “為一款智能健身手環寫一篇 500 字左右的推廣文案,突出其精準心率監測、超長續航、時尚外觀設計,面向年輕運動愛好者群體”,如此這般,模型生成的文案將更貼合實際需求。再者,利用示例明確輸出格式堪稱點睛之筆,尤其在面對復雜任務時,為模型展示期望的輸出結構,能引導它生成規范、可用的內容。例如,若您需要模型提取文本中的實體信息,給出 “公司名稱:[具體公司 1],[具體公司 2];人名:[具體人名 1],[具體人名 2]……” 的示例格式,模型便能依葫蘆畫瓢,輸出整齊劃一的結果。此外,合理選擇零樣本或少樣本提示也是提升效率的妙招。對于一些常見、簡單任務,先嘗試零樣本提示,讓模型憑借自身知識儲備給出答案;若效果不佳,再適時引入少樣本提示,通過提供少量示例,引導模型學習特定的回應方式,逐步優化輸出結果。

(二)參數調優策略

OpenAI 接口中的參數猶如精密儀器的旋鈕,細微調整便能帶來截然不同的輸出效果,精準掌控這些參數是挖掘模型潛能的關鍵。以 “temperature” 參數為例,它巧妙地平衡著模型輸出的創造力與準確性。當您致力于獲取精準、嚴謹的事實性答案,如專業知識問答、學術資料查詢時,將 “temperature” 調低至 0.2 左右,模型會收斂起天馬行空的想象,聚焦于最可靠、常見的回答,為您呈上權威準確的信息;而在創意寫作、頭腦風暴、藝術創作構思等場景下,適度調高 “temperature” 至 0.8 甚至更高,模型將掙脫束縛,釋放出無限創意,為您帶來新奇獨特、腦洞大開的靈感火花。再看 “max_tokens” 參數,它直接決定了模型生成文本的長度邊界。若您只是需要簡短的摘要、關鍵信息提取,將 “max_tokens” 設置在 100 – 200 區間,模型便能迅速給出精煉要點;而對于長篇幅的故事創作、深度報告撰寫等任務,則可根據需求將其調至 500 以上,給予模型充足的發揮空間。但需注意,過高的 “max_tokens” 可能導致生成延遲增加、資源消耗加劇,因此務必依據實際情況合理權衡。此外,還有 “top_p” 參數用于控制生成文本的多樣性,“frequency_penalty” 和 “presence_penalty” 參數可調節文本的重復度與新穎性等,深入了解每個參數的特性與作用,結合具體任務反復調試,方能找到最佳參數組合,讓 OpenAI 接口為您的項目綻放最耀眼的光芒。

六、調試接口:掃清障礙的技巧

(一)常見錯誤排查

在調用 OpenAI 接口的過程中,難免會遇到一些 “絆腳石”,但只要掌握了排查方法,就能迅速將其清除。其中,認證失敗是較為常見的問題,若遇到 “Invalid authorization header” 的報錯,大概率是 API 密鑰配置出錯。此時,應仔細檢查密鑰是否正確設置,確保在請求頭中準確無誤地傳遞 “Authorization: Bearer YOUR_API_KEY”,特別要留意密鑰前后有無多余空格、拼寫是否準確,還要確認密鑰是否已過期或被吊銷,如有需要,及時重新生成密鑰。

網絡連接問題也不容忽視,當請求長時間無響應或返回 “Could not connect to the server” 的提示時,首先檢查本地網絡是否正常,嘗試打開其他網頁或使用 ping 命令測試與 OpenAI 服務器的連接,如 “ping api.openai.com”,查看是否存在丟包現象;若本地網絡正常,可能是代理設置有誤,需重新審視代理服務器的配置,確保代理地址、端口號等信息準確,且代理服務正常運行。

參數錯誤同樣會導致接口調用失敗,比如使用了不兼容的模型與端點組合,模型要求的參數未提供或格式錯誤等。以文本生成任務為例,若 “prompt” 參數為空或超過模型允許的最大長度,模型將無法理解需求,從而返回錯誤提示。此時,對照接口文檔,逐一核對請求參數,確保參數的名稱、類型、取值范圍等符合要求,根據錯誤提示針對性地調整參數,使請求符合接口規范。

(二)借助工具調試

工欲善其事,必先利其器,在調試 OpenAI 接口時,專業工具能讓效率大幅提升。Apifox 就是這樣一款得力助手,它為開發者提供了一個直觀便捷的調試環境。進入 Apifox 的 OpenAI 接口調試界面,仿佛置身于一個井然有序的 “請求工坊”,左側清晰羅列著各種接口類型,如 Chat Completions、Completions 等,方便快速定位所需接口。在設置參數區域,根據任務需求輕松調整模型名稱、請求消息、溫度、最大令牌數等參數,每個參數都有詳細的提示,避免因參數理解不清而犯錯。設置完成后,點擊 “發送” 按鈕,猶如一鍵啟動智能引擎,片刻間就能在右側看到接口的響應結果,包括模型生成的文本、使用的令牌數、響應時間等關鍵信息。若結果不符合預期,借助 Apifox 的界面,可迅速回溯檢查參數設置,修改后再次發送請求,如此反復,能快速定位問題根源,讓接口調試工作事半功倍,助力開發者順利駕馭 OpenAI 接口,釋放無限創新潛能。

上一篇:

API鑒權方案:保障接口安全的關鍵

下一篇:

深入剖析 APISIX 路由優先級中的路由匹配
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費