最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python調用OpenAI?API的完整教程

 更新時間:2026年04月29日 08:27:03   作者:Xidaoapi  
文章詳細介紹了將AI大模型GPT接入項目的全過程,包括準備工作、最簡示例、流式輸出、多輪對話、實用技巧、常見錯誤處理等六個部分,并給出示例代碼,同時提供了函數調用和模型選擇指南,最后介紹了異步調用在高并發(fā)場景下的使用方法,需要的朋友可以參考下

前言

最近AI大模型火得一塌糊涂,很多開發(fā)者想把GPT接到自己項目里,但官方文檔看著一頭霧水。這篇文章把整個流程從頭到尾走一遍,保證你看完就能跑起來。

一、準備工作

1.1 安裝OpenAI SDK

pip install openai

建議用虛擬環(huán)境隔離:

python -m venv ai-env
# Windows
ai-env\Scripts\activate
# macOS/Linux
source ai-env/bin/activate
pip install openai

1.2 獲取API Key

到OpenAI官網注冊賬號,在API Keys頁面創(chuàng)建一個新的Key。

注意:API Key只顯示一次,務必保存好。如果泄露了立刻去后臺撤銷。

二、最簡示例:一次對話

from openai import OpenAI

client = OpenAI(api_key="sk-your-api-key-here")

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "用一句話解釋什么是遞歸"}
    ]
)

print(response.choices[0].message.content)

輸出示例:

遞歸是函數在自己的定義中調用自身,通過不斷縮小問題規(guī)模直到滿足終止條件來求解問題的編程技巧。

三、流式輸出(打字機效果)

普通調用要等AI全部生成完才返回,體驗差。流式輸出可以逐字顯示:

from openai import OpenAI

client = OpenAI(api_key="sk-your-api-key-here")

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "寫一首關于編程的五言絕句"}
    ],
    stream=True  # 關鍵參數
)

for chunk in stream:
    if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="", flush=True)

print()  # 換行

四、多輪對話

AI模型本身沒有記憶,多輪對話靠你把歷史消息傳回去:

from openai import OpenAI

client = OpenAI(api_key="sk-your-api-key-here")

# 維護對話歷史
messages = [
    {"role": "system", "content": "你是一個Python編程助手,回答簡潔專業(yè)。"}
]

def chat(user_input):
    messages.append({"role": "user", "content": user_input})
    
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=messages
    )
    
    assistant_msg = response.choices[0].message.content
    messages.append({"role": "assistant", "content": assistant_msg})
    return assistant_msg

# 測試多輪對話
print(chat("Python的列表推導式是什么?"))
print(chat("能給幾個實際例子嗎?"))
print(chat="和map/filter比哪個好?"))

注意:messages列表會越來越長,token消耗也越大。生產環(huán)境需要做截斷或摘要處理。

五、實用技巧

5.1 控制輸出格式(JSON Mode)

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "列出3個Python Web框架,用JSON格式返回,字段:name, description, stars"}
    ],
    response_format={"type": "json_object"}  # 強制JSON輸出
)

import json
data = json.loads(response.choices[0].message.content)
print(json.dumps(data, indent=2, ensure_ascii=False))

5.2 設置溫度參數

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "給我起一個技術博客名字"}],
    temperature=0.9  # 0=保守確定,1=創(chuàng)意發(fā)散
)
  • temperature=0:適合事實性問答、代碼生成
  • temperature=0.7:通用場景
  • temperature=1.0+:創(chuàng)意寫作、頭腦風暴

5.3 超時和重試

from openai import OpenAI
import time

client = OpenAI(
    api_key="sk-your-api-key-here",
    timeout=30.0,  # 請求超時30秒
    max_retries=2   # 最多重試2次
)

5.4 計算Token消耗

# 響應對象中包含token統計
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "你好"}]
)

usage = response.usage
print(f"輸入Token: {usage.prompt_tokens}")
print(f"輸出Token: {usage.completion_tokens}")
print(f"總計Token: {usage.total_tokens}")

六、常見錯誤處理

from openai import OpenAI, APIError, RateLimitError, APIConnectionError

client = OpenAI(api_key="sk-your-api-key-here")

try:
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": "Hello"}]
    )
except RateLimitError:
    print("?? 請求太頻繁,請稍后重試")
except APIConnectionError:
    print("?? 網絡連接失敗,檢查網絡設置")
except APIError as e:
    print(f"?? API錯誤:{e.status_code} - {e.message}")
else:
    print(response.choices[0].message.content)

七、函數調用(Function Calling)

讓AI有能力調用外部工具:

import json

client = OpenAI(api_key="sk-your-api-key-here")

# 定義工具
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "獲取指定城市的天氣信息",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "城市名稱"
                    }
                },
                "required": ["city"]
            }
        }
    }
]

# 第一次調用:AI決定是否使用工具
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "北京今天天氣怎么樣?"}],
    tools=tools
)

message = response.choices[0].message

if message.tool_calls:
    # AI想要調用工具
    tool_call = message.tool_calls[0]
    args = json.loads(tool_call.function.arguments)
    print(f"AI想調用: {tool_call.function.name}({args})")
    
    # 這里執(zhí)行實際函數,模擬返回結果
    weather_result = {"city": "北京", "temperature": "22°C", "condition": "晴"}
    
    # 第二次調用:把工具結果傳回給AI
    response2 = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "user", "content": "北京今天天氣怎么樣?"},
            message,
            {
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": json.dumps(weather_result, ensure_ascii=False)
            }
        ],
        tools=tools
    )
    print(response2.choices[0].message.content)

八、模型選擇指南

模型適用場景價格(輸入/輸出 per 1M tokens)
gpt-4o復雜推理、代碼生成、長文分析2.5/2.5 / 2.5/10
gpt-4o-mini日常對話、簡單任務、高頻調用0.15/0.15 / 0.15/0.6
o3-mini數學推理、邏輯分析1.1/1.1 / 1.1/4.4

日常開發(fā)用 gpt-4o-mini 性價比最高,復雜任務再上 gpt-4o

九、異步調用

高并發(fā)場景用異步:

import asyncio
from openai import AsyncOpenAI

async def main():
    client = AsyncOpenAI(api_key="sk-your-api-key-here")
    
    # 并發(fā)5個請求
    tasks = [
        client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[{"role": "user", "content": f"用5個字形容數字{i}"}]
        )
        for i in range(5)
    ]
    
    responses = await asyncio.gather(*tasks)
    for i, resp in enumerate(responses):
        print(f"{i}: {resp.choices[0].message.content}")

asyncio.run(main())

總結

  • 基礎調用只需要3行代碼
  • 多輪對話靠維護messages列表
  • 流式輸出提升用戶體驗
  • Function Calling讓AI能調用外部工具
  • 日常用gpt-4o-mini,復雜任務上gpt-4o

以上就是Python調用OpenAI API的完整教程的詳細內容,更多關于Python調用OpenAI API的資料請關注腳本之家其它相關文章!

相關文章

  • python中squeeze的超詳細解釋(附代碼示例)

    python中squeeze的超詳細解釋(附代碼示例)

    這篇文章主要介紹了python中squeeze的超詳細解釋,squeeze操作用于去除張量或數組中大小為1的維度,簡化數據結構,在PyTorch和NumPy中都有類似的功能,需要的朋友可以參考下
    2025-03-03
  • Python實現蟻群優(yōu)化算法的示例代碼

    Python實現蟻群優(yōu)化算法的示例代碼

    蟻群算法是一種源于大自然生物世界的新的仿生進化算法,本文主要介紹了Python如何實現蟻群算法,文中通過示例代碼具有一定的參考價值,感興趣的小伙伴們可以了解一下
    2023-08-08
  • django中的auth模塊與admin后臺管理方法

    django中的auth模塊與admin后臺管理方法

    這篇文章主要介紹了django中的auth模塊與admin后臺管理方法,包括auth模塊的常用方法及如何擴展auth_user表,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Python摳圖教程之使用OpenCV實現背景去除

    Python摳圖教程之使用OpenCV實現背景去除

    這篇文章主要給大家介紹了關于Python摳圖教程之使用OpenCV實現背景去除的相關資料,背景去除是在很多視覺應用里的主要預處理步驟,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • VsCode中超好用的8個python插件推薦

    VsCode中超好用的8個python插件推薦

    本人日常使用vscode進行開發(fā),并且比較喜歡折騰vscode,會到處找這一些好玩的插件,于是越攢越多,下面這篇文章主要給大家介紹了關于VsCode中超好用的8個python擴展插件的相關資料,需要的朋友可以參考下
    2022-12-12
  • Python自動化按日期分割日志的多種方法

    Python自動化按日期分割日志的多種方法

    在開發(fā)和運維Python應用程序時,日志管理是至關重要的,不僅幫助我們調試問題,還能用于監(jiān)控和性能分析,下面就跟隨小編一起學習一下多種自動化按日期分割日志的方法吧
    2025-04-04
  • django數據關系一對多、多對多模型、自關聯的建立

    django數據關系一對多、多對多模型、自關聯的建立

    這篇文章主要介紹了django數據關系一對多、多對多模型、自關聯的建立
    2019-07-07
  • Java Spring項目國際化(i18n)詳細方法與實例

    Java Spring項目國際化(i18n)詳細方法與實例

    這篇文章主要介紹了Java Spring項目國際化詳細方法與實例,需要的朋友可以參考下
    2020-03-03
  • 利用Python編寫的實用運維腳本分享

    利用Python編寫的實用運維腳本分享

    Python在很大程度上可以對shell腳本進行替代。筆者一般單行命令用shell,復雜點的多行操作就直接用Python了。本文歸納了Python中一些實用腳本操作,需要的可以參考一下
    2022-05-05
  • pytorch快速搭建神經網絡_Sequential操作

    pytorch快速搭建神經網絡_Sequential操作

    這篇文章主要介紹了pytorch快速搭建神經網絡_Sequential操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論

宁夏| 宁都县| 泾川县| 光山县| 宜昌市| 通州市| 云安县| 义马市| 华池县| 民和| 慈溪市| 东丽区| 郑州市| 凉城县| 屯门区| 孝义市| 公主岭市| 庆城县| 永清县| 北碚区| 故城县| 屏南县| 德清县| 新兴县| 龙游县| 达拉特旗| 邹平县| 花垣县| 大埔县| 南江县| 申扎县| 健康| 鞍山市| 肃宁县| 华亭县| 广平县| 许昌县| 静安区| 高邑县| 天全县| 济宁市|