首页 > 其他分享 >ai-assistant stream with websocket.

ai-assistant stream with websocket.

时间:2024-12-04 23:13:17浏览次数:9  
标签:websocket ai assistant content import const response

ai-assistant

stream with websocket.

 

https://github.com/dpills/ai-assistant/blob/master/main.py

from typing import AsyncGenerator, NoReturn

import uvicorn
from dotenv import load_dotenv
from fastapi import FastAPI, WebSocket
from fastapi.responses import HTMLResponse
from openai import AsyncOpenAI

load_dotenv()

app = FastAPI()
client = AsyncOpenAI()

with open("index.html") as f:
    html = f.read()


async def get_ai_response(message: str) -> AsyncGenerator[str, None]:
    """
    OpenAI Response
    """
    response = await client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {
                "role": "system",
                "content": (
                    "You are a helpful assistant, skilled in explaining "
                    "complex concepts in simple terms."
                ),
            },
            {
                "role": "user",
                "content": message,
            },
        ],
        stream=True,
    )

    all_content = ""
    async for chunk in response:
        content = chunk.choices[0].delta.content
        if content:
            all_content += content
            yield all_content


@app.get("/")
async def web_app() -> HTMLResponse:
    """
    Web App
    """
    return HTMLResponse(html)


@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket) -> NoReturn:
    """
    Websocket for AI responses
    """
    await websocket.accept()
    while True:
        message = await websocket.receive_text()
        async for text in get_ai_response(message):
            await websocket.send_text(text)


if __name__ == "__main__":
    uvicorn.run(
        "main:app",
        host="0.0.0.0",
        port=8000,
        log_level="debug",
        reload=True,
    )

 

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <title>AI Assistant 

标签:websocket,ai,assistant,content,import,const,response
From: https://www.cnblogs.com/lightsong/p/18587444

相关文章

  • PyQt设计界面优化 #qss #ui设计 #QMainWindow
    思维导图 通过qss实现ui界面设计优化 Qss是Qt程序界面中用来设置控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性,它是用来美化UI界面。实现界面和程序的分离,快速切换界面。首先我们在Pytchram创建一个新目录  然后将我们所需要的图片打包到文件......
  • python接入百度智能云API实现ai对话
    python接入百度智能云API实现ai对话千帆大模型平台-百度智能云千帆代码段:importrequestsimportjson#获取访问令牌的函数defget_access_token():#百度AI开放平台的API地址,用于获取access_tokenurl="个人url"#将空字符串转换为JSON格式payload......
  • 【前端必读】(一)如何免费无限使用Cursor:AI编程工具的终极指南!
    在当今快速发展的科技时代,AI编程工具如雨后春笋般涌现,其中Cursor凭借其强大的功能和便捷的使用体验,迅速在海外市场引起了热议。最近,这家公司还获得了OpenAI的6000万美元融资,进一步证明了其潜力和市场价值。那么,Cursor究竟有多强大?如何才能免费无限使用它呢?本文将为你揭开Cur......
  • LangChain大模型应用开发
    LangChain作为一个新兴的框架,旨在简化大模型应用的开发过程。它提供了一套工具和接口,帮助开发者将大模型无缝集成到各种应用场景中。通过LangChain,开发者可以更专注于业务逻辑的实现,而不必过多关注底层模型的复杂性。......
  • 11Labs 推出 Conversational AI,可定制交互式语音智能体;Recall.ai:视频会议智能体通用 A
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • elysia openai示例
    import'dotenv/config';import{Elysia,t}from'elysia';importOpenAIfrom'openai';constopenai=newOpenAI({apiKey:process.env.OPENAI_API_KEY,baseURL:process.env.OPENAI_API_BASE_URL,});constapp=new......
  • OpenAI:AGI共5层,我们现在在第2层
    迈向AGI顶峰的五层阶梯:我们正跨越的第二步©作者|潇潇来源|神州问学在2024年的OpenAI开发者日(DevDay)上,我们见证了人工智能领域的一系列重大进展。OpenAI的CEOSamAltman提出了一个关于通用人工智能(AGI)的五层框架理论,将AGI的发展分为五个阶段,而我们目前正处于第二层——......
  • 学习AI大模型的3件事你必须知道,业内知识,速看
    准备学习AI的伙伴!前排提示,文末有大模型AGI-CSDN独家资料包哦!以下3点知识,你必须知道!尤其第3个,对你未来的职业影响非常大!刷到这条视频的伙伴,一定记得收藏保存!你是否遇过这种情况?想搜索一个问题,搜索出来的答案乱七八糟?特别是防不胜防的广告!严重干扰了我们的判断?有了AI......
  • Salesforce与AWS两大巨头联手,Agentic AI将如何改变商业模式?
    在人工智能浪潮席卷全球的今天,企业如何利用AI释放数据潜能、实现数字化转型已成为决胜关键。作为行业领先的科技巨头,Salesforce与AWS的战略合作再次将AgenticAI推向商业创新的前沿。仅一年时间,这两家公司就在数据与AI集成方面取得了突破性进展,为企业和消费者带来了全新的智能体......
  • socket() failed (24: Too many open files)
     这个错误因为超出了ulimitnofile当前bash的这样修改:[root@A06~]#ulimit-n200[root@A06~]#ulimit-n2000000[root@A06~]#ulimit-n2000000 systemd启动的程序这样修改[root@A06~]#cat/usr/lib/systemd/system/nginx.service|grep-C1-inofile[Ser......