Spaces:
Running
Running
File size: 3,097 Bytes
55b1be9 34287b9 7d8cb48 2cf7795 76eaf5a 4db0db1 7d8cb48 f23a640 55b1be9 df5bf2a 55b1be9 7a8d7b0 9a45992 0385c62 2cf7795 55b1be9 6482098 55b1be9 2cf7795 6482098 34287b9 0a52d39 3a2e91a 34287b9 3a2e91a 34287b9 0385c62 2cf7795 4a7f8d2 3a2e91a 4a7f8d2 cdb7b92 349a986 cdb7b92 df7b5e5 4a7f8d2 3a2e91a df7b5e5 7d8cb48 df7b5e5 e15e34e df7b5e5 4a7f8d2 619c607 3bf6983 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
from fastapi.middleware.cors import CORSMiddleware
from fastapi import FastAPI, Request, Header, BackgroundTasks, HTTPException, status
# import google.generativeai as genai
from gradio_client import Client
import json
import os
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage, ImageSendMessage, AudioMessage
)
# GOOGLE_API_KEY = os.environ["GOOGLE_API_KEY"]
# genai.configure(api_key = GOOGLE_API_KEY)
# # Initialize the Gemini model
# model = genai.GenerativeModel('gemini-pro')
client = Client("https://alanchen1115-gemini-api.hf.space/--replicas/mgfss/")
result = client.predict(
"Hello!!", # str in 'Prompt' Textbox component
api_name="/predict"
)
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
line_bot_api = LineBotApi(os.environ["CHANNEL_ACCESS_TOKEN"])
line_handler = WebhookHandler(os.environ["CHANNEL_SECRET"])
working_status = os.getenv("DEFALUT_TALKING", default = "true").lower() == "true"
@app.get("/")
def root():
return {"title": "Echo Bot"}
@app.post("/webhook")
async def webhook(
request: Request,
background_tasks: BackgroundTasks,
x_line_signature=Header(None),
):
body = await request.body()
try:
background_tasks.add_task(
line_handler.handle, body.decode("utf-8"), x_line_signature
)
except InvalidSignatureError:
raise HTTPException(status_code=400, detail="Invalid signature")
return "ok"
@line_handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
global working_status
if event.type != "message" or event.message.type != "text":
TextSendMessage(text="Event type error:[No message or the message does not contain text]")
elif event.message.text == "再見":
working_status = True
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="Bye!"))
return
elif working_status:
try:
messages = []
message = event.message.text
messages.append({
"role": "user",
"parts": [message],
})
# Check if response is valid
# response = model.generate_content(messages)
# out = response.parts[0].text
# if not response.parts or not response.parts[0].text:
# out = response.parts[0].text
out = client.predict(messages, api_name="/predict")
if not out:
out = "Gemini: [No response or the response does not contain text]"
except:
out = "Gemini error!"
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=out))
if __name__ == "__main__":
uvicorn.run("main:app", host="0.0.0.0", port=7860, reload=True) |