调用OpenAI的大模型1

一、通过API调用GPT-3.5

from openai import OpenAI
import os
os.environ['OPENAI_BASE_URL']=''
os.environ['OPENAI_API_KEY']=''

client = OpenAI()
completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ],
    max_tokens=2000,
    temperature=1.8,
    # n=2

)

for item in completion.choices:
    print(item.message.content)

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

# Hello! How can I help you today?

二、流式输出

流式输出简单理解就是模型生成一个词,就输出一个。与之对应的就是模型生成完全部输出后,在一次性全部输出。设置参数stream=true即可实现。

from openai import OpenAI
import os
os.environ['OPENAI_BASE_URL']=''
os.environ['OPENAI_API_KEY']=''

from dotenv import load_dotenv
load_dotenv()

client = OpenAI()
completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ],
    stream=True
)
print(completion)
for item in completion:
    content = item.choices[0].delta.content
    if content is not None:
        print(content,end='')

 三、查看token使用数量

调用API需要mon的,有时我们需要查看问题消耗的token数量,定夺是否需要优化提示词,进而控制成本,通过comletion.usage属性查看。

from openai import OpenAI
import os
os.environ['OPENAI_BASE_URL']=''
os.environ['OPENAI_API_KEY']=''

from dotenv import load_dotenv
load_dotenv()

client = OpenAI()
completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ]
)

print(completion.usage)

# CompletionUsage(completion_tokens=9, prompt_tokens=19, total_tokens=28)


### OpenAI 流式输出的方法 为了实现OpenAI流式输出功能,开发者可以通过设置`stream=True`参数来启用这一特性。当此参数被激活时,API将以增量方式返回数据片段而不是一次性返回整个响应[^3]。 对于Python环境中的具体应用而言,在使用`openai.ChatCompletion.create()`方法创建聊天完成请求的时候传递该选项即可开启流模式。每当有新的消息部分可用时就会触发相应的事件处理程序,从而允许应用程序逐步接收并显示这些更新给最终用户[^2]。 下面是利用标准同步版本以及异步版(借助于`asyncio`)两种不同风格编写出来的简单例子: #### 同步流式输出实例 ```python import openai def sync_streaming_response(prompt, api_key): response = "" completion = openai.Completion.create( engine="text-davinci-003", prompt=prompt, max_tokens=150, n=1, stop=None, temperature=0.7, stream=True, # Enable streaming mode. api_key=api_key ) for event in completion: chunk = event['choices'][0].get('text', '') print(chunk, end="|", flush=True) # Print each part as it arrives with a separator. response += chunk return response ``` #### 异步流式输出实例 ```python from asyncio import run import openai async def async_streaming_response(prompt, api_key): response = "" async for event in await openai.ChatCompletion.acreate( model="gpt-3.5-turbo", messages=[{"role": "user", "content": prompt}], max_tokens=150, n=1, stop=None, temperature=0.7, stream=True, # Enable streaming mode. api_key=api_key ): delta = event.get('choices', [{}])[0].get('delta', {}).get('content') if delta is not None: print(delta, end="|", flush=True) # Print each part as it arrives with a separator. response += delta return response if __name__ == "__main__": user_prompt = input("Enter your message:") my_api_key = "<your_open_ai_api_key_here>" result = run(async_streaming_response(user_prompt, my_api_key)) print("\nFinal Response:", result) ``` 上述两个代码段展示了如何分别采用同步和异步的方式从OpenAI API获取实时的数据流,并将其逐片打印出来以便观察过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木珊数据挖掘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值