|
|
import os |
|
|
from dotenv import load_dotenv |
|
|
from fastapi import FastAPI |
|
|
from fastapi.responses import JSONResponse |
|
|
from qwen_agent.agents import Assistant |
|
|
|
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
|
|
|
api_key = os.getenv("API_KEY") |
|
|
if not api_key: |
|
|
raise ValueError("API_KEY environment variable not set.") |
|
|
|
|
|
app = FastAPI() |
|
|
|
|
|
class MainAgent: |
|
|
def __init__(self): |
|
|
|
|
|
|
|
|
self.agent = Assistant( |
|
|
llm=dict(model='gemini-2.5-flash-preview-05-20', model_server='https://gmn.ainet.ltd/v1', api_key=api_key), |
|
|
name='assistant', |
|
|
description='A helpful assistant agent.' |
|
|
) |
|
|
|
|
|
def process_query(self, query: str): |
|
|
|
|
|
|
|
|
messages = [{'role': 'user', 'content': query}] |
|
|
|
|
|
final_response_content = "" |
|
|
for response_item in self.agent.run(messages=messages): |
|
|
|
|
|
|
|
|
if isinstance(response_item, list): |
|
|
for chunk in response_item: |
|
|
if isinstance(chunk, dict) and 'content' in chunk: |
|
|
|
|
|
final_response_content = chunk['content'] |
|
|
elif isinstance(response_item, dict) and 'content' in response_item: |
|
|
|
|
|
final_response_content = response_item['content'] |
|
|
|
|
|
return final_response_content |
|
|
|
|
|
main_agent = MainAgent() |
|
|
|
|
|
@app.get("/") |
|
|
async def read_root(): |
|
|
return {"message": "Hello, FastAPI!"} |
|
|
|
|
|
@app.post("/agent_chat") |
|
|
async def agent_chat(query: dict): |
|
|
user_query = query.get("query") |
|
|
print(f"Received query: {user_query}") |
|
|
if not user_query: |
|
|
return JSONResponse(content={"error": "Query parameter is missing"}, status_code=400) |
|
|
|
|
|
agent_response = main_agent.process_query(user_query) |
|
|
return {"response": agent_response} |
|
|
|