日常学习之:GPT3.5 API 并发调用

文章目录

library

import asyncio
import json
import os
import openai
from docx import Document
from langchain.llms import OpenAIChat

步骤描述

  • 构造针对单独 prompt 的请求函数 async_generate
  • 构造并发请求的函数 generate_concurrently
    • 在函数中将每个单独请求的 async_generate 的数据进行整合
    • 整合完了之后进行数据持久化
  • 完成

async def async_generate(llm, text):
    """

    :param llm:
    :param text:
    :return:
    """
    prompt = """
    		....
            """ + text
    resp = await llm.agenerate([f"{prompt}"])
    # 我直接让 gpt3.5 生成的 json 格式的数据,所以这里用 loads 进行 json 化,
    # 这段代码根据你自己的数据格式来调整
    data = json.loads(resp.generations[0][0].text)
    data['original_text'] = text
    return data

async def generate_concurrently(all_texts):
    """

    :param all_texts:
    :return:
    """
    llm = OpenAIChat(temperature=0.5)
    tasks = [async_generate(llm, text) for text in all_texts]
    result = await asyncio.gather(*tasks)
    # 数据都造好了之后进行持久化
    with open("output_syn.json", "w", encoding="utf-8") as f:
        json.dump(result, f, ensure_ascii=False, indent=4)
    print(result)

def main_asyn():
    """

    :return:
    """
    # 这步也是自己按照需求来,我的需求就不在这里说了,最重要的是 asyncio.run 以及构造的两个异步函数
    paths = [os.path.join("./Abstract", path) for path in os.listdir("./Abstract")]
    all_texts = []
    for path in paths:
        all_texts += read_doc(path)
    asyncio.run(generate_concurrently(all_texts[:2]))

if __name__ == '__main__':
    os.environ["OPENAI_API_KEY"] = "填入你自己的 OPENAI key"
    main_asyn()

<think>好的,我现在需要帮助用户了解如何在云服务器上调用大模型API,并提供示例。首先,我需要回忆之前学过的相关知识,尤其是用户提供的三个引用内容。这些引用提到了API的基本概念、异步调用优化以及星火大模型的示例,这些都是关键点。 首先,用户的问题是关于云服务器上调用的方法,所以需要明确云服务器和普通环境下的调用有什么不同。可能涉及网络配置、安全组设置、环境变量管理等方面。然后,根据引用中的示例,特别是引用[1]提到通过HTTP请求调用API,引用[2]提到了使用令牌池和异步调用,引用[3]给出了星火大模型的参数设置,这些都是可以整合的内容。 接下来,我需要分步骤来解答。首先应该介绍通用的调用流程,包括准备环境、安装依赖、设置认证、发送请求和处理响应。然后,针对具体的例子,比如使用Python的requests库调用API,需要给出代码示例,并解释每个部分的作用。同时,可能需要提到异步调用的优化方法,如使用aiohttp库,或者多个API密钥的令牌池,如引用[2]中的例子。 另外,需要注意云服务器特有的配置,比如检查防火墙设置,确保出站规则允许访问API的端口,通常为443(HTTPS)。还要提到环境变量的管理,例如在云服务器上如何安全地存储API密钥,比如使用.env文件或者云平台提供的密钥管理服务。 在编写代码示例时,要确保符合用户给出的格式要求,比如行内数学公式用$...$,独立公式用$$...$$,但在这个问题中可能用不到数学公式,所以重点放在代码块和步骤说明上。同时,回答需要使用中文,结构清晰,分步骤说明。 可能还需要考虑异常处理,比如网络错误、认证失败等情况,在示例中加入try-except块来提高代码的健壮性。此外,性能优化方面,如异步调用并发请求,可以引用引用[2]的内容,说明如何提升效率。 最后,生成相关问题,可能需要包括安全性、性能优化、具体模型(如星火)的调用差异、调试方法等,这些问题能帮助用户进一步探索。 现在需要将这些思路整理成一个连贯的回答,确保每个步骤都有对应的解释和示例代码,同时引用正确的参考文献。注意检查是否符合用户的所有格式要求,特别是代码块和引用标识的正确添加。</think>以下是在云服务器上调用大模型API的步骤说明及示例: ### 一、通用调用流程 1. **环境准备** - 确保云服务器已安装Python 3.7+环境 - 开放API访问权限:检查防火墙/安全组规则,允许出站流量访问API端口(通常为443)[^3] 2. **安装依赖** ```bash pip install requests python-dotenv # 基础HTTP库及环境变量管理 ``` 3. **API认证配置** ```python # .env文件配置(需设置读写权限保护) API_KEY = "your_api_key_here" API_ENDPOINT = "https://api.example.com/v1/chat/completions" ``` ### 二、同步调用示例(Python) ```python import os import requests from dotenv import load_dotenv load_dotenv() # 加载环境变量 def call_llm(prompt): headers = { "Authorization": f"Bearer {os.getenv(&#39;API_KEY&#39;)}", "Content-Type": "application/json" } payload = { "model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": prompt}], "temperature": 0.7 } try: response = requests.post(os.getenv("API_ENDPOINT"), json=payload, headers=headers) response.raise_for_status() # 自动处理HTTP错误 return response.json()[&#39;choices&#39;][0][&#39;message&#39;][&#39;content&#39;] except requests.exceptions.RequestException as e: print(f"API调用失败: {str(e)}") return None # 调用示例 print(call_llm("解释量子计算的基本原理")) ``` ### 三、异步调用优化(引用[2]实践) ```python import aiohttp import asyncio async def async_call(session, prompt): async with session.post( os.getenv("API_ENDPOINT"), json={"model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": prompt}]}, headers={"Authorization": f"Bearer {os.getenv(&#39;API_KEY&#39;)}"} ) as response: return await response.json() async def main(): async with aiohttp.ClientSession() as session: tasks = [async_call(session, f"问题{i}: 什么是机器学习?") for i in range(5)] results = await asyncio.gather(*tasks) print(results) # 运行异步任务 asyncio.run(main()) ``` ### 四、安全增强建议 1. 使用HTTPS加密通信 2. 通过云平台密钥管理服务(如AWS KMS/Azure Key Vault)存储API密钥 3. 设置API调用速率限制(参考各平台文档,如OpenAI默认限制$3,500$请求/分钟[^1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

暖仔会飞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值