news 2026/5/9 13:50:54

chatgpt入口 chatgpt的一些python调用方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
chatgpt入口 chatgpt的一些python调用方法

来源:https://www.laoyingai.com/

使用Python调用ChatGPT API主要依赖OpenAI官方库,以下是完整的调用方法和代码示例。

1. 安装与配置

首先安装官方Python库:

bash

pip install openai

获取API密钥后,推荐使用环境变量管理(创建.env文件或直接设置环境变量):

python

import os from openai import OpenAI # 从环境变量读取密钥(推荐) client = OpenAI( api_key=os.environ.get("OPENAI_API_KEY") )

安全提醒:切勿将API密钥硬编码在代码中。

2. 基础调用方法

方法一:Chat Completions API(当前标准)

python

from openai import OpenAI client = OpenAI() completion = client.chat.completions.create( model="gpt-4o", # 或 "gpt-4-turbo", "gpt-3.5-turbo" messages=[ {"role": "system", "content": "你是一个专业的编程助手。"}, {"role": "user", "content": "如何在Python中实现快速排序?"} ], temperature=0.7 # 控制随机性,0-1之间 ) print(completion.choices[0].message.content)

方法二:Responses API(较新的主要API)

python

response = client.responses.create( model="gpt-4o", instructions="你是一个友好的客服助手", input="请问你们支持7天无理由退货吗?" ) print(response.output_text)

参数说明

  • model:模型名称,如gpt-4ogpt-4-turbogpt-3.5-turbo

  • messages:对话历史,每个消息包含role(system/user/assistant)和content

  • temperature:0-1之间,值越低输出越确定,越高越有创造性

  • max_tokens:限制响应最大长度

3. 多轮对话管理

多轮对话需要维护完整的消息历史:

python

def run_conversation(): messages = [ {"role": "system", "content": "你是一个善于倾听的助手。"} ] while True: user_input = input("用户: ") if user_input.lower() == 'quit': break # 添加用户消息 messages.append({"role": "user", "content": user_input}) # 获取响应 completion = client.chat.completions.create( model="gpt-4o", messages=messages ) assistant_reply = completion.choices[0].message.content print(f"助手: {assistant_reply}") # 添加助手回复到历史 messages.append({"role": "assistant", "content": assistant_reply})

关键点:每次调用都需要发送完整的历史记录,否则模型会丢失上下文。

4. 流式响应(Streaming)

适用于聊天界面等需要实时输出的场景:

python

# 同步流式 stream = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "讲一个关于独角兽的短故事"}], stream=True ) for chunk in stream: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True)

python

# 异步流式 from openai import AsyncOpenAI import asyncio async def stream_response(): client = AsyncOpenAI() stream = await client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "你好"}], stream=True ) async for chunk in stream: if chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="") asyncio.run(stream_response())

5. 异步调用

提升并发性能,适用于高吞吐场景:

python

import asyncio from openai import AsyncOpenAI async def main(): client = AsyncOpenAI() response = await client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "解释什么是异步编程"}] ) print(response.choices[0].message.content) asyncio.run(main())

6. 函数调用(Function Calling)

让模型调用自定义函数获取实时数据:

python

import json from openai import OpenAI # 定义工具函数 def get_weather(latitude: float, longitude: float) -> str: """获取指定坐标的天气""" # 实际应调用真实API return f"{latitude}, {longitude} 位置的温度为15°C" # 定义工具描述 tools = [{ "type": "function", "function": { "name": "get_weather", "description": "获取指定经纬度的当前温度", "parameters": { "type": "object", "properties": { "latitude": {"type": "number"}, "longitude": {"type": "number"} }, "required": ["latitude", "longitude"] } } }] client = OpenAI() messages = [{"role": "user", "content": "纽约现在的天气怎么样?"}] completion = client.chat.completions.create( model="gpt-4o", messages=messages, tools=tools ) # 处理工具调用 if completion.choices[0].finish_reason == "tool_calls": tool_call = completion.choices[0].message.tool_calls[0] arguments = json.loads(tool_call.function.arguments) # 执行函数 result = get_weather(**arguments) # 将结果返回给模型 messages.append(completion.choices[0].message) messages.append({ "role": "tool", "tool_call_id": tool_call.id, "content": result }) # 获取最终回复 final_response = client.chat.completions.create( model="gpt-4o", messages=messages ) print(final_response.choices[0].message.content)

7. 错误处理与重试

python

from openai import OpenAI, APIError, APIConnectionError, RateLimitError import time def call_with_retry(max_retries=3): for attempt in range(max_retries): try: completion = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "Hello"}] ) return completion.choices[0].message.content except RateLimitError: wait_time = min(2 ** attempt + 0.5, 10) print(f"速率限制,等待 {wait_time} 秒...") time.sleep(wait_time) except APIConnectionError: print("连接错误,重试中...") time.sleep(1) except APIError as e: print(f"API错误: {e}") break raise Exception("所有重试尝试失败")

8. 结构化输出(JSON模式)

python

completion = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": "从文本中提取姓名和城市,以JSON格式返回。"}, {"role": "user", "content": "张三住在北京,是一名工程师。"} ], response_format={"type": "json_object"} ) print(completion.choices[0].message.content) # 输出:{"name": "张三", "city": "北京"}

注意事项

  • 成本控制:注意max_tokens限制,响应token比输入token成本更高

  • 速率限制:免费层每分钟3次调用,生产环境需升级计划

  • API版本:确保使用最新SDK(v1.0+),旧版openai.Completion已废弃

来源 https://www.laoyingai.com/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 13:50:09

AI重塑高等教育:教学反馈、学术诚信与未来技能的三重变革

1. 项目概述:当AI成为课堂里的“新同学” 最近和几位在大学任教的朋友聊天,话题总绕不开一个“幽灵”——AI。这个幽灵不再是科幻电影里的概念,它已经实实在在地坐在了教室里,有时是学生写论文的“隐形助手”,有时是老…

作者头像 李华
网站建设 2026/5/9 13:46:25

基于主动学习的广义Benders分解算法初始化优化研究

1. 项目概述:当优化算法遇上“主动学习”在运筹优化和工业工程领域,我们常常需要面对一类“硬骨头”问题:大规模、混合整数、带有复杂约束的优化模型。这类问题大到供应链网络设计,小到芯片布局布线,其核心挑战在于&am…

作者头像 李华
网站建设 2026/5/9 13:40:32

AI教育标准化:破解数据孤岛,构建互操作生态的技术框架与实践

1. 从概念到实践:为什么AI教育需要一场“标准化革命”?如果你和我一样,在过去的几年里深度参与过教育科技产品的研发或落地,你一定会对一种现象感到既兴奋又头疼:AI教育(AIED)的潜力是巨大的&am…

作者头像 李华
网站建设 2026/5/9 13:38:30

AI与XR技术驱动的心脏健康数字孪生:算法、应用与未来

1. 项目概述:当心脏健康遇见数字镜像最近几年,我身边不少朋友和同事都开始关注自己的心脏健康,从智能手表的心率监测到年度体检的心电图,大家聊起来总带着一丝焦虑。与此同时,我所在的领域——XR(扩展现实&…

作者头像 李华
网站建设 2026/5/9 13:33:01

深度学习在引力波信号检测与参数估计中的应用与实践

1. 项目概述:当AI遇见宇宙的“涟漪”引力波,这个百年前由爱因斯坦广义相对论预言的时空涟漪,直到2015年才被LIGO(激光干涉引力波天文台)首次直接探测到,开启了人类观测宇宙的全新窗口。每一次双黑洞并合、中…

作者头像 李华
网站建设 2026/5/9 13:32:50

ncmdumpGUI:让网易云音乐NCM文件重获自由的本地解密工具

ncmdumpGUI:让网易云音乐NCM文件重获自由的本地解密工具 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&am…

作者头像 李华