|
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( |
|
CORSMiddleware, |
|
allow_credentials=True, |
|
allow_origins=["*"], |
|
allow_methods=["*"], |
|
allow_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 |
|
|
|
@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}) |
|
|
|
class User(BaseModel): |
|
prompt: str, |
|
model: str, |
|
sampler: str, |
|
seed: int, |
|
neg: str or None |
|
|
|
@app.route("/test", methods=["POST"]) |
|
async def test(request: User): |
|
data = { |
|
'prompt': request.prompt, |
|
'model': request.model, |
|
'sampler': request.sampler, |
|
'seed': request.seed, |
|
'neg': request.neg |
|
} |
|
return data |
|
|
|
|