33 lines
1.1 KiB
Python
Raw Normal View History

Add Token Streaming in AGS , Support Env variables (#5659) <!-- Thank you for your contribution! Please review https://microsoft.github.io/autogen/docs/Contribute before opening a pull request. --> This PR has 3 main improvements. - Token streaming - Adds support for environment variables in the app settings - Updates AGS to persist Gallery entry in db. ## Adds Token Streaming in AGS. Agentchat now supports streaming of tokens via `ModelClientStreamingChunkEvent `. This PR is to track progress on supporting that in the AutoGen Studio UI. If `model_client_stream` is enabled in an assitant agent, then token will be streamed in UI. ```python streaming_assistant = AssistantAgent( name="assistant", model_client=model_client, system_message="You are a helpful assistant.", model_client_stream=True, # Enable streaming tokens. ) ``` https://github.com/user-attachments/assets/74d43d78-6359-40c3-a78e-c84dcb5e02a1 ## Env Variables Also adds support for env variables in AGS Settings You can set env variables that are loaded just before a team is run. Handy to set variable to be used by tools etc. <img width="1291" alt="image" src="https://github.com/user-attachments/assets/437b9d90-ccee-42f7-be5d-94ab191afd67" /> > Note: the set variables are available to the server process. <!-- Please add a reviewer to the assignee section when you create a PR. If you don't have the access to it, we will shortly find a reviewer and assign them to your PR. --> ## Why are these changes needed? <!-- Please give a short summary of the change and the problem this solves. --> ## Related issue number <!-- For example: "Closes #1234" --> Closes #5627 Closes #5662 Closes #5619 ## Checks - [ ] I've included any doc changes needed for <https://microsoft.github.io/autogen/>. See <https://github.com/microsoft/autogen/blob/main/CONTRIBUTING.md> to build and test documentation locally. - [ ] I've added tests (if relevant) corresponding to the changes introduced in this PR. - [ ] I've made sure all auto checks have passed.
2025-02-25 07:21:08 -08:00
# api/routes/settings.py
from typing import Dict
from fastapi import APIRouter, Depends, HTTPException
from ...datamodel import Settings, SettingsConfig
from ..deps import get_db
router = APIRouter()
@router.get("/")
async def get_settings(user_id: str, db=Depends(get_db)) -> Dict:
try:
response = db.get(Settings, filters={"user_id": user_id})
if not response.status or not response.data:
# create a default settings
config = SettingsConfig(environment=[])
default_settings = Settings(user_id=user_id, config=config.model_dump())
db.upsert(default_settings)
response = db.get(Settings, filters={"user_id": user_id})
return {"status": True, "data": response.data[0]}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e)) from e
@router.put("/")
async def update_settings(settings: Settings, db=Depends(get_db)) -> Dict:
response = db.upsert(settings)
if not response.status:
raise HTTPException(status_code=400, detail=response.message)
return {"status": True, "data": response.data}