fastapi请求豆包流式传输接口

# main.py  
from fastapi import FastAPI, BackgroundTasks, HTTPException, Body
from fastapi.responses import StreamingResponse
import asyncio
import json
from volcenginesdkarkruntime import Ark
from starlette.middleware.cors import CORSMiddleware

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 允许所有来源的请求,也可以指定特定的 URL
    allow_credentials=True,  # 是否允许发送凭证(如 cookies 和 HTTP 认证)
    allow_methods=["*"],  # 允许所有 HTTP 方法
    allow_headers=["*"],  # 允许所有头部信息
)

@app.post("/stream-data/")
async def stream_data(prompt: str = Body(..., embed=True)):
    # 这里我们假设要根据prompt生成流式数据  
    # 在实际场景中,你可能需要处理更复杂的逻辑  
    print('-------------', prompt)

    async def chat_dance(prompt):
        client = Ark(api_key='xxxxxxx661956')

        stream = client.chat.completions.create(
            model="ep-xxxxxxxx-c4xff",
            messages=[
                {"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
                {"role": "user", "content": prompt},
            ],
            stream=True
        )

        for chunk in stream:
            if not chunk.choices:
                continue
            data = chunk.choices[0].delta.content
            yield json.dumps(data, ensure_ascii=False)

    return StreamingResponse(chat_dance(prompt))

# 运行应用的命令(在终端或命令行中执行)  
# uvicorn main:app --reload
### 豆瓣 API 接口调用失败的原因分析 当遇到豆瓣 API 报错的情况时,常见的错误码及其含义如下: - **403 Forbidden**: 表明请求被服务器拒绝执行。这通常是因为客户端未获得授权或权限不足。 - **430 Invalid Request**: 这一特定状态码表示请求无效,可能是由于签名验证失败或其他参数不合法。 对于微信小程序中调用豆瓣 API 出现的 430 错误,可能由以下几个方面引起[^4]: #### 可能原因及解决方案 1. **域名配置不当** 如果在微信公众平台的小程序后台没有正确配置业务域名,则可能导致跨域资源共享(CORS)问题,进而引发请求失败。确保按照官方指南完成所有必要的安全设置并提交审核通过后的域名才能用于生产环境下的网络请求。 2. **API 访问频率限制** 部分第三方服务提供商会对免费用户的 API 请求次数做出限定。如果超出限额则会触发相应的流量控制机制而阻止进一步的数据交换活动。建议查阅最新的 API 使用条款来确认是否有此类约束存在以及如何升级至更高配额版本的服务计划。 3. **身份认证失效** 当前使用的 AppKey 或者其他形式的身份令牌已经过期或者是非法字符组成的字符串也会造成同样的后果。务必定期更新密钥信息,并妥善保管好这些敏感数据以防泄露给未经授权的人士使用。 4. **HTTPS 加密输缺失** 现代互联网标准强烈推荐甚至强制要求采用 SSL/TLS 协议加密通信链路以保障信息安全性和隐私保护水平。检查所依赖的基础架构组件是否支持 HTTPS 方案并且正常工作着;如果不满足条件的话尽快迁移至更先进的技术栈之上。 5. **请求头字段不符合规定** 某些 RESTful Web Service 对于 HTTP 头部中的某些项有着严格的要求比如 Content-Type 应该设为什么样的 MIME 类型等细节之处不容忽视。仔细对照文档说明调整发送出去的消息格式直至完全匹配为止。 ```javascript // JavaScript 示例代码展示如何处理 API 响应 wx.request({ url: 'https://api.douban.com/v2/book/isbn/:isbn', // 替换成实际的目标 URL 地址 method: 'GET', header: { "Content-Type": "application/json" }, success(res){ console.log('成功:', res.data); }, fail(err){ console.error('失败:', err.errMsg); } }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lytcreate.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值