上圖是一個使用AI生成的圖片, 描述一下這篇文章的背景。
程序員系統學習了OpenAI提供的api接口,並熟練利用提示詞結合業務解決業務問題。
現狀
講一個故事來開始今天的內容。
架構師老李在技術圈裏以其卓越的技術洞察力而著稱。另一邊,Carter,一個年輕有爲的30歲創業公司老闆,正面臨一個急需解決的難題。
他的公司主打全球客服平臺,專爲小顆粒用戶提供高度個性化的服務體驗,同時也爲中大型客戶提供了AI賦能的人工客服解決方案。
隨着業務的蓬勃發展,小顆粒用戶羣體對AI的期待日益增長,他們希望得到即刻而準確的反饋。中大型企業的客服團隊也迫切需要AI的支持,
以提高服務效率和顧客滿意度。Carter清楚地意識到,如果不能迅速提升技術實力,他的公司可能會失去在這場全球化競爭中的優勢。
正當Carter焦慮不已時,老李出現了。兩人的一次偶然會面,讓老李瞭解到了Carter的燃眉之急。老李建議Carter採用OpenAI 提供的API,
這是一個他個人深入研究並且對其潛力深信不疑的解決方案。他向Carter解釋瞭如何利用這些API和提示詞來提升客服平臺的智能水平,不僅能夠理解客戶的複雜需求,還能提供實時、高質量的解答。
Carter被老李的見解所說服,並決定投資於OpenAI的技術。他組織了一支專業團隊,在老李的指導下,成員們開始系統地學習OpenAI的API,
並根據公司的業務需求和客戶的特定場景來定製化提示詞。經過數月的努力,團隊開發出了一個先進的AI客服系統,能夠針對不同規模的客戶提供優化服務。
新系統的上線立即產生了影響。小顆粒用戶享受到了前所未有的快速而精確的服務體驗,中大型企業的客服效率也得到了顯著提升。
Carter的公司迅速在全球客服領域贏得了聲譽,其市場份額穩步增長。
通過Carter和老李的合作,公司不僅保持了在行業中的競爭力,還樹立了利用AI技術持續創新的典範。
問題
你知道基於AI有哪些典型的應用嗎?如何把AI跟業務結合。
大部分的企業其實只用到了提示詞,即可把自己的業務跟AI結合起來。
那麼,AI有哪些典型的應用提示詞呢?
實現路徑
作爲程序員,你必須首先知道AI能幹什麼?再結合業務想想自己可以幹什麼?
即你首先需要了解AI提供了哪些API的能力,有哪些典型應用場景。
最後結合所在公司的業務場景,靈活的使用AI的能力跟業務結合。
接口協議
在使用提示詞之前,我們先熟悉一下AI提供的接口的http協議是怎樣的。
大綱如下:
您可以通過任何語言的HTTP請求與API進行交互,也可以通過我們的官方Python綁定庫、官方Node.js庫或社區維護的庫來實現。
要安裝官方Python綁定庫,請運行以下命令:
pip install openai
要安裝官方Node.js庫,請在您的Node.js項目目錄中運行以下命令:
npm install openai@^4.0.0
這些命令將分別在Python和Node.js環境中安裝OpenAI提供的官方庫,使得開發者可以在他們選擇的編程環境中方便地調用API。
我比較熟悉java語言,那麼java語言的庫是什麼呢?
openai-java 或者使用azure的openapi庫java版本來進行編程,它也支持訪問openAI的接口。
認證
OpenAI API 使用 API 密鑰進行認證。請訪問您的 API 密鑰頁面以獲取您將在請求中使用的 API 密鑰。
請記住,您的 API 密鑰是一個祕密!不要與他人分享,也不要在任何客戶端代碼中(瀏覽器、應用程序)暴露它。生產環境中的請求必須通過您自己的後端服務器路由,在此服務器中您的 API 密鑰可以安全地從環境變量或密鑰管理服務中加載。
所有 API 請求都應將您的 API 密鑰包含在 Authorization HTTP 頭中,如下所示:
Authorization: Bearer OPENAI_API_KEY
這是標準的Bearer令牌認證方式,其中OPENAI_API_KEY
是您的實際API密鑰。在發送HTTP請求時,您需要在請求頭中加入這個字段,以便API服務能夠驗證並授權您的請求。
組織
對於屬於多個組織的用戶,您可以通過傳遞一個頭部(header)來指定哪個組織用於API請求。這些API請求的使用量將計入指定組織的使用量。
示例的curl命令如下:
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "OpenAI-Organization: org-uNvcRCbJ1LJApJrL0vMOj6Wa"
使用OpenAI Python包的示例:
from openai import OpenAI
client = OpenAI(
organization='org-uNvcRCbJ1LJApJrL0vMOj6Wa',
)
使用OpenAI Node.js包的示例:
import OpenAI from "openai";
const openai = new OpenAI({
organization: 'org-uNvcRCbJ1LJApJrL0vMOj6Wa',
});
組織ID可以在您的組織設置頁面上找到。 發起請求時,您可以按照上述示例中的代碼,通過指定組織ID來確保API請求計入相應組織的使用量。這在管理多個組織的資源和使用情況時非常有用。
發送請求
您可以將以下命令粘貼到終端中,以運行您的第一個API請求。請確保將 $OPENAI_API_KEY
替換爲您的祕密API密鑰。
curl https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Say this is a test!"}],
"temperature": 0.7
}'
這個請求查詢 gpt-3.5-turbo
模型(在內部指向 gpt-3.5-turbo
模型的變體),以完成以提示 "Say this is a test" 開始的文本。您應該得到一個類似於以下的響應:
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1677858242,
"model": "gpt-3.5-turbo-0613",
"usage": {
"prompt_tokens": 13,
"completion_tokens": 7,
"total_tokens": 20
},
"choices": [
{
"message": {
"role": "assistant",
"content": "\n\nThis is a test!"
},
"logprobs": null,
"finish_reason": "stop",
"index": 0
}
]
}
現在您已經生成了第一個聊天補全,讓我們來解析這個響應對象。我們可以看到 finish_reason
是 stop
,這意味着API返回了模型生成的完整聊天補全,而沒有遇到任何限制。
在 choices
列表中,我們只生成了一條消息,但您可以通過設置 n
參數來生成多條消息選項。
請求協議
下面歸納一下 這個接口的協議。
請求參數
響應信息
聊天補全對象 代表模型根據提供的輸入返回的聊天補全響應
流式傳輸
OpenAI API提供了將響應流式傳輸回客戶端的能力,以便對某些請求提供部分結果。爲了實現這一點,我們遵循了服務器發送事件(Server-sent events)標準。我們的官方Node.js和Python庫包含了輔助工具,以簡化解析這些事件的過程。
流式傳輸功能支持Chat Completions API和Assistants API。本節重點介紹如何在Chat Completions中使用流式傳輸。有關在Assistants API中如何使用流式傳輸的更多信息,請訪問此處。
在Python中,一個流式傳輸請求看起來像這樣:
from openai import OpenAI
client = OpenAI()
stream = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "Say this is a test"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content is not None:
print(chunk.choices[0].delta.content, end="")
在Node.js/TypeScript中,一個流式傳輸請求看起來像這樣:
import OpenAI from "openai";
const openai = new OpenAI();
async function main() {
const stream = await openai.chat.completions.create({
model: "gpt-4",
messages: [{ role: "user", content: "Say this is a test" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
}
main();
解析服務器發送的事件
解析服務器發送的事件並不簡單,應該謹慎進行。簡單的策略,如按換行符分割,可能會導致解析錯誤。
我們建議儘可能使用現有的客戶端庫。
效果就是結果是一條一條返回的,避免等待太久。
返回值格式
聊天補全塊對象 代表模型根據提供的輸入返回的聊天補全響應的流式傳輸塊。
提示詞典型應用場景
挨個熟悉提示詞。 GPT給出了30個提示詞的例子。
我舉例拆解一下。
實際使用的是chat接口。
英語語法校正
辯論
面試問問題
小結
本文從一個故事出發,拋出問題,作爲程序員如何系統的瞭解AI的能力並靈活的跟業務結合?
最後,系統的介紹了OpenAI的API圖譜,和典型的提示詞場景。 並作了一些實踐。
在實際工作中確實也是這麼做的,比如客服的AI質檢, AI總結, AI知識庫,AI文本聊天機器人 。
原創不易,關注誠可貴,轉發價更高!轉載請註明出處,讓我們互通有無,共同進步,歡迎溝通交流。