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 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 gello(): 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 @app.route("/imagen", methods=["POST"]) async def generate_image(request: Request): data = await request.json() prompt = data['prompt'] model = data.get["model"] sampler = data.get["sampler"] seed = int(data.get["seed"]) neg = data.get["neg"] response = generate_image_prodia(prompt, model, sampler, seed, neg) return jsonify({"image": response}) @app.route("/test", methods=["POST"]) async def test(request: Request): data = await request.json() prompt = data['prompt'] model = data["model"] sampler = data["sampler"] seed = int(data["seed"]) neg = data["neg"] res = f'prompt: {prompt} \n model: {model} \n sampler: {sampler} \n seed: {seed} \n neg: {neg}' return res