Ai學習之openai api

一、什么是openai api

大家對特斯拉的馬斯克應該是不陌生的,openai 就是馬斯克投資的一家研究人工智能的公司,它就致力于推動人工智能技術的發展,目標是確保人工智能對人類有益,并實現安全且通用的人工智能。

此后,OpenAI 在技術研發和應用方面不斷取得進展,逐漸成為全球矚目的人工智能研究機構,OpenAI 在自然語言處理方面取得了眾多突破性成果,最著名的是 GPT(Generative Pretrained Transformer)系列語言模型。例如 GPT-3,它具有強大的語言理解和生成能力,能夠生成連貫、有邏輯的文本,在問答、文本生成、翻譯等多個任務中表現出色。GPT-4 更是在 GPT-3 的基礎上進一步提升了性能和功能,能夠處理更復雜的任務,對語言的理解和生成更加精準和自然。

而chatGpt 就是使用GPT的網頁端應用。

但是為了更好的支持開發者使用,openai 公司提供了標準接口的api 供開發者使用GPT大模型。我們可以通過 api 和大模型進行通訊,從而實現使用大模型實現自己的功能。

目前 openapi api 規范已經是國內所有大模型統一的接口規范,基本上國內各大廠商都參考其規范實現自己的模型 API

二、Api 詳細說明

可以看看下面的例子:

curl --insecure https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $KEY" \
-d '{"model": "gpt-4o","messages": [{"role": "user", "content": "寫一首關于AI的詩"}]}'

這是一個 openai 的聊天補全接口,實際上但Open AI API 提供了許多功能,比如:

Text Generation:生成和處理文本
Embeddings:文本轉向量
Speech to Text:語音轉文本
Image Generation:生成圖像
Vision:處理圖像輸入

這些不同的接口是通過不同的路徑進行區分。這里看到的 /v1/chat/completions 就是我們常用的大模型的編程接口。

接口有兩個特別重要的參數。分別是訪問地址和api key。 通過 api key 可以用來區分不同的用戶,而訪問地址則是一個模型代理地址,不同模型提供的訪問地址一般都是不同的。這個地址不一定是模型本身提供的,也可能是代理地址。
https://api-docs.deepseek.com/zh-cn/guides/multi_round_chat
在這里插入圖片描述

然后我們來講講接口的請求參數說明:

核心參數:
參數名稱參數說明
model用于指定與哪個模型進行溝通,選擇合適的模型來完成相應任務
messages是一個消息列表,發送給模型的消息,可理解為歷史消息列表,為模型提供更多上下文信息,幫助其更準確地理解和生成回復
temperature設定大模型回復的確定性,取值范圍對應不同的隨機性。值越小,生成的回復越具確定性;值越大,回復的隨機性越強
max_completion_tokens表示生成應答的最大token數。由于大模型生成內容常按token數計費,合理限制此參數大小可有效控制成本
stream用于決定是否需要流式應答。流式應答能夠提升聊天的響應速度,為用戶帶來更好的交互體驗
工程參數
參數名稱參數說明
終端用戶標識開發者提供給OpenAI,用于監控和檢測API的濫用,監控粒度能到個體
n為每條輸入消息生成回復的數量,生成更多內容需計費,若無特別需求,不額外設置此參數
response_format應答格式,默認接口只生成文本內容,開發中常用JSON格式,既可用提示詞要求大模型返回JSON格式,也可通過設置此參數讓API直接返回JSON格式
工具參數
參數名稱說明
tools(模型可以調用的工具列表)每個工具包含 type(類型,目前只有 function 類型)和 function 部分。function 用于告知模型函數的調用方式,包括 description(函數描述)、name(函數名)以及 parameters(函數參數)
tool_choice(選擇怎么調用工具)參數值為 none 表示不調用工具;參數值為 auto 表示模型自行選擇生成消息或調用工具;參數值為 required 表示必須調用工具
模型參數
參數名稱說明
seed(種子值)用于解決可重復輸出問題,使用相同種子值和相同參數時,生成的結果相同,類似緩存
stop停止序列,告知大模型在生成文本時遇到該序列就停止生成
frequency_penalty(頻率懲罰)根據一個 token 在已生成文本中出現的頻率進行計算
presence_penalty(存在懲罰)根據一個 token 是否已經出現來進行計算
logit_bias(logit 偏差)在 logit 函數計算中調整計算結果,主要目的是修改某些 token 出現的可能性,如不希望某些詞出現在最終結果里
logprobs(是否返回對數概率)返回大模型生成每個 token 的概率
top_logprobs(返回每個位置最可能返回的 token 數量)讓大模型返回排名靠前的 token
top_p(另一種采樣方式,與 temperature 相對)在概率前多少的 token 中進行選擇

再看看接口的響應參數:

子項說明
id應答的唯一標識
object(對象類型)通用字段,在聊天補全接口中,值為 chat.comploetion(應為 chat.completion )
createdUnix 時間戳,表明這個應答生成的時間
model生成應答的模型,一般是請求時所帶的模型,有時會返回具體的版本
system_fingerprint(系統指紋)代表模型運行時使用的后端配置
choices.index(索引)順序編號,如果文本被切分了,可通過索引將內容重新排列以生成正確順序
choices.finish_reason停止生成 token 的原因,到了停止點或遇到停止序列,原因是 stop ;到了一定長度,原因是 length
message(回復的消息)角色和內容
tool_calls.id函數調用的 ID
tool_calls.type目前只支持 function
tool_calls.function函數調用部分,其中包含了 name 和 arguments
logprobs.contenttoken 與其對應的概率(logprob)。bytes 表示這個 token 對應的 UTF-8 的字節表現形式,而 top_logprobs 則包含了每個 token 對應的備選 token 及其概率

三、應答模式

流式應答

為了解決大模型生成文本比較慢的問題。如果等大模型把所有內容生成一次性返回,等待的時間會非常長。對于聊天的場景,這會讓本已很長的等待時間會顯得更加漫長。所以推出了流式應答,主要是為了提高聊天的響應速度。

SSE

是指在連接建立之后,一塊一塊地把消息發給用戶。對應到大模型上,就是每生成一部分內容就發送一次。

OpenAI 之所以選擇 SSE,而非 WebSocket,是因為 SSE 的技術特點剛好可以契合流式應答的需求:
客戶端與大模型的交互是一次性的,每產生一個 token,服務端就可以給客戶端推送一次,當生成內容結束時,斷掉連接,無需考慮客戶端的存活情況

如果采用 WebSocket 的話,服務端就需要維護連接,像 OpenAI 這樣的服務體量,維護連接就會造成很大的服務器壓力,而且,在生成內容場景下,也沒有向服務端進一步發送內容,WebSocket 的雙向通信在這里也是多余的

SSE 通常分成純數據消息和事件消息。純數據消息,顧名思義就是只有數據的消息主題,事件消息會先有一個事件(event),后面跟著具體的數據(data)

通過使用大模型的API,我們可以更好了基于大模型實現應用層軟件。這也是開發者低成本使用成熟大模型的途徑。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906333.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906333.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906333.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 合并區間 java

用 ArrayList<int[]> merged new ArrayList<>();來定義數組的list將數組進行排序 Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));如果前面的末尾>后面的初始&#xff0c;那么新的currentInterval的末尾這兩個數組末尾的最大值&#xff0c;即…

std::vector<>.emplace_back

emplace_back() 詳解&#xff1a;C 就地構造的效率革命 emplace_back() 是 C11 引入的容器成員函數&#xff0c;用于在容器尾部就地構造&#xff08;而非拷貝或移動&#xff09;元素。這一特性顯著提升了復雜對象的插入效率&#xff0c;尤其適用于構造代價較高的類型。 一、核…

Dify實戰案例《AI面試官》更新,支持語音交互+智能知識庫+隨機題庫+敏感詞過濾等...

大模型應用課又更新了&#xff0c;除了之前已經完結的兩門課&#xff08;視頻圖文&#xff09;&#xff1a; 《Spring AI 從入門到精通》《LangChain4j 從入門到精通》 還有目前正在更新的 《Dify 從入門到實戰》 本周也迎來了一大波內容更新&#xff0c;其中就包括今天要介紹…

AGI大模型(29):LangChain Model模型

1 LangChain支持的模型有三大類 大語言模型(LLM) ,也叫Text Model,這些模型將文本字符串作為輸入,并返回文本字符串作為輸出。聊天模型(Chat Model),主要代表Open AI的ChatGPT系列模型。這些模型通常由語言模型支持,但它們的API更加結構化。具體來說,這些模型將聊天消…

動態IP技術在跨境電商中的創新應用與戰略價值解析

在全球化4.0時代&#xff0c;跨境電商正經歷從"流量紅利"向"技術紅利"的深度轉型。動態IP技術作為網絡基礎設施的關鍵組件&#xff0c;正在重塑跨境貿易的運營邏輯。本文將從技術架構、應用場景、創新實踐三個維度&#xff0c;揭示動態IP如何成為跨境電商突…

android雙屏之副屏待機顯示圖片

摘要&#xff1a;android原生有雙屏的機制&#xff0c;但需要芯片廠商適配框架后在底層實現。本文在基于芯發8766已實現底層適配的基礎上&#xff0c;僅針對上層Launcher部分對系統進行改造&#xff0c;從而實現在開機后副屏顯示一張待機圖片。 副屏布局 由于僅顯示一張圖片&…

STM32之中斷

一、提高程序實時性的架構方案 輪詢式 指的是在程序運行時&#xff0c;首先對所有的硬件進行初始化&#xff0c;然后在主程序中寫一個死循環&#xff0c;需要運行的功能按照順序進行執行&#xff0c;輪詢系統是一種簡單可靠的方式&#xff0c;一般適用于在只需要按照順序執行…

LLM應用開發平臺資料

課程和代碼資料 放下面了&#xff0c;自取&#xff1a; https://pan.quark.cn/s/57a9d22d61e9

硬盤健康檢測與性能測試的實踐指南

在日常使用 Windows 系統的過程中&#xff0c;我們常常需要借助各種工具來優化性能、排查問題或管理文件。針對windows工具箱進行實測解析&#xff0c;發現它整合了多種實用功能&#xff0c;能夠幫助用戶更高效地管理計算機。 以下為測試發現的功能特性&#xff1a; 硬件信息查…

正則表達式進階(三):遞歸模式與條件匹配的藝術

在正則表達式的高級應用中&#xff0c;遞歸模式和條件匹配是處理復雜嵌套結構和動態模式的利器。它們突破了傳統正則表達式的線性匹配局限&#xff0c;能夠應對嵌套括號、HTML標簽、上下文依賴等復雜場景。本文將詳細介紹遞歸模式&#xff08;(?>...)、 (?R) 等&#xff0…

從零開始創建React項目及制作頁面

一、React 介紹 React 是一個由 Meta&#xff08;原Facebook&#xff09; 開發和維護的 開源JavaScript庫&#xff0c;主要用于構建用戶界面&#xff08;User Interface, UI&#xff09;。它是前端開發中最流行的工具之一&#xff0c;廣泛應用于單頁應用程序&#xff08;SPA&a…

【前端部署】通過 Nginx 讓局域網用戶訪問你的純前端應用

在日常前端開發中&#xff0c;我們常常需要快速將本地的應用展示給局域網內的同事或測試人員&#xff0c;而傳統的共享方式往往效率不高。本文將指導你輕松地將你的純前端應用&#xff08;無論是 Vue, React, Angular 或原生項目&#xff09;部署到本地&#xff0c;并配置局域網…

【Python裝飾器深潛】從語法糖到元編程的藝術

目錄 ?? 前言??? 技術背景與價值?? 當前技術痛點??? 解決方案概述?? 目標讀者說明?? 一、技術原理剖析?? 核心概念圖解?? 核心作用講解?? 關鍵技術模塊說明?? 技術選型對比??? 二、實戰演示?? 環境配置要求?? 核心代碼實現案例1:基礎計時裝飾器案…

mbed驅動st7789屏幕-硬件選擇及連接(1)

目錄 1.整體介紹 2. 硬件選擇 2.1 mbed L432KC 2.2 ST7789 240*240 1.3寸 3. mbed與st7789的硬件連接 4. 總結 1.整體介紹 我們在使用單片機做一些項目的時候,交互性是最重要的因素。那么對于使用者而言,交互最直接的體現無非就是視覺感知,那么我們希望將項目通過視覺…

SpringBoot集成Jasypt對數據庫連接密碼進行加密、解密

引入依賴 <!--配置密碼加密--><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version></dependency><plugin><groupId>c…

分類器引導的條件生成模型

分類器引導的條件生成模型 分類器引導的條件生成模型1. **基本概念**2. **核心思想**3. **實現步驟&#xff08;以擴散模型為例&#xff09;**4. **優點**5. **挑戰與注意事項**6. **應用場景**7. **數學推導**總結 分類器引導的條件生成模型 分類器引導的條件生成模型是一種通…

WPF中的ObjectDataProvider:用于數據綁定的數據源之一

ObjectDataProvider是WPF(Windows Presentation Foundation)中一種強大而靈活的數據綁定源&#xff0c;它允許我們將對象實例、方法結果甚至是構造函數的返回值用作數據源。通過本文&#xff0c;我將深入探討ObjectDataProvider的工作原理、使用場景以及如何在實際應用中發揮其…

lasticsearch 報錯 Document contains at least one immense term 的解決方案

一、問題背景 在使用 Elasticsearch 存儲較大字段數據時&#xff0c;出現如下異常&#xff1a; ElasticsearchStatusException: Elasticsearch exception [typeillegal_argument_exception, reasonDocument contains at least one immense term in field"fieldZgbpka"…

[目標檢測] YOLO系列算法講解

前言 目標檢測就是做到給模型輸入一張圖片或者視頻&#xff0c;模型可以迅速判斷出視頻和圖片里面感興趣的目標所有的位置和它 的類別&#xff0c;而當前最熱門的目標檢測的模型也就是YOLO系列了。 YOLO系列的模型的提出&#xff0c;是為了解決當時目標檢測的模型幀率太低而提…

服務器操作系統時間同步失敗的原因及修復

服務器操作系統時間同步失敗可能導致日志記錄不準確、安全證書失效等問題。以下是常見原因及對應的修復方法&#xff1a; ### 一、時間同步失敗的常見原因 1. **網絡連接問題** - NTP服務器無法訪問&#xff08;防火墻阻止、網絡中斷&#xff09; - DNS解析失敗或網…