fastapi / main.py
ka1kuk's picture
Update main.py
22e810f
raw
history blame
No virus
4.63 kB
import os
from langchain.memory import ConversationBufferMemory
from langchain.utilities import GoogleSearchAPIWrapper
from langchain.agents import AgentType, initialize_agent, Tool
from lang import G4F
from fastapi import FastAPI, Request, Path
from pydantic import BaseModel
from fastapi.middleware.cors import CORSMiddleware
from ImageCreator import generate_image_prodia
app = FastAPI()
app.add_middleware( # add the middleware
CORSMiddleware,
allow_credentials=True, # allow credentials
allow_origins=["*"], # allow all origins
allow_methods=["*"], # allow all methods
allow_headers=["*"], # allow all headers
)
google_api_key = os.environ["GOOGLE_API_KEY"]
cse_id = os.environ["GOOGLE_CSE_ID"]
model = os.environ['default_model']
search = GoogleSearchAPIWrapper()
tools = [
Tool(
name ="Search" ,
func=search.run,
description="useful when you need to answer questions about current events"
),
]
llm = G4F(model=model)
agent_chain = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
@app.get("/")
def hello():
return "Hello! My name is Linlada."
@app.post('/linlada')
async def hello_post(request: Request):
llm = G4F(model=model)
data = await request.json()
prompt = data['prompt']
chat = llm(prompt)
return chat
@app.post('/search')
async def searches(request: Request):
data = await request.json()
prompt = data['prompt']
response = agent_chain.run(input=prompt)
return response
class User(BaseModel):
prompt: str
model: str = None
sampler: str = None
seed: int = None
neg: str = None
@app.post("/imagen")
def generate_image(request: User):
prompt = request.prompt
model = request.model
sampler = request.sampler
seed = request.seed
neg = request.neg
response = generate_image_prodia(prompt, model, sampler, seed, neg)
return {"image": response}
details = {
1: {'Absolute Reality V1.6': 'absolutereality_V16.safetensors [37db0fc3]',
'Analog V1': 'analog-diffusion-1.0.ckpt [9ca13f02]',
'Anything V3': 'anythingv3_0-pruned.ckpt [2700c435]',
'Anything V4.5': 'anything-v4.5-pruned.ckpt [65745d25]',
'Anything V5': 'anythingV5_PrtRE.safetensors [893e49b9]',
'AbyssOrangeMix V3': 'AOM3A3_orangemixs.safetensors [9600da17]',
'Deliberate V2': 'deliberate_v2.safetensors [10ec4b29]',
'Dreamlike Diffusion V1': 'dreamlike-diffusion-1.0.safetensors [5c9fd6e0]',
'Dreamlike Diffusion V2': 'dreamlike-diffusion-2.0.safetensors [fdcf65e7]',
'Dreamshaper 6 baked vae': 'dreamshaper_6BakedVae.safetensors [114c8abb]',
'Dreamshaper 7': 'dreamshaper_7.safetensors [5cf5ae06]',
'Dreamshaper 8': 'dreamshaper_8.safetensors [9d40847d]',
'Eimis Anime Diffusion V1.0': 'EimisAnimeDiffusion_V1.ckpt [4f828a15]',
"Elldreth's Vivid": 'elldreths-vivid-mix.safetensors [342d9d26]',
'Lyriel V1.6': 'lyriel_v16.safetensors [68fceea2]',
'MechaMix V1.0': 'mechamix_v10.safetensors [ee685731]',
'MeinaMix Meina V9': 'meinamix_meinaV9.safetensors [2ec66ab0]',
'MeinaMix Meina V11': 'meinamix_meinaV11.safetensors [b56ce717]',
'Openjourney V4': 'openjourney_V4.ckpt [ca2f377f]',
'Portrait+ V1': 'portraitplus_V1.0.safetensors [1400e684]',
'Realistic Vision V1.4': 'Realistic_Vision_V1.4-pruned-fp16.safetensors [8d21810b]',
'Realistic Vision V4.0': 'Realistic_Vision_V4.0.safetensors [29a7afaa]',
'Realistic Vision V5.0': 'Realistic_Vision_V5.0.safetensors [614d1063]',
'Redshift Diffusion V1.0': 'redshift_diffusion-V10.safetensors [1400e684]',
'ReV Animated V1.2.2': 'revAnimated_v122.safetensors [3f4fefd9]',
'SD V1.4': 'sdv1_4.ckpt [7460a6fa]',
'SD V1.5': 'v1-5-pruned-emaonly.ckpt [81761151]',
"Shonin's Beautiful People V1.0": 'shoninsBeautiful_v10.safetensors [25d8c546]',
"TheAlly's Mix II": 'theallys-mix-ii-churned.safetensors [5d9225a4]',
'Timeless V1': 'timeless-1.0.ckpt [7c4971d4]'
},
2: {
'Euler': 'Euler',
'Euler a': 'Euler a',
'Heun': 'Heun',
'DPM++ 2M Karras': 'DPM++ 2M Karras',
'DPM++ SDE Karras': 'DPM++ SDE Karras',
'DDIM': 'DDIM'
}
}
@app.get("/imagen-details/{detail_id}")
def image_detail(detail_id: int = Path(None, description="The ID of 1.model id and 2.sampler id", gt=0, lt=3)):
return details[detail_id]
@app.post("/test")
def test(request: User):
return {'data': f'Prompt is {request.prompt} Model is {request.model}'}