11import base64
2+ import io
3+ import logging
24from typing import AsyncGenerator
5+
36import httpx
47import openai
5-
8+ import pdfplumber
69from fastapi import FastAPI
710from fastapi .middleware .cors import CORSMiddleware
811from fastapi .responses import JSONResponse
9- from sse_starlette .sse import EventSourceResponse
10-
12+ from openai .types .chat import (
13+ ChatCompletionAssistantMessageParam ,
14+ ChatCompletionMessageParam ,
15+ ChatCompletionSystemMessageParam ,
16+ ChatCompletionUserMessageParam ,
17+ )
18+ from openbb_ai import citations , cite , get_widget_data , message_chunk
1119from openbb_ai .models import (
1220 Citation ,
13- CitationHighlightBoundingBox ,
1421 CitationCollectionSSE ,
15- MessageChunkSSE ,
22+ CitationHighlightBoundingBox ,
23+ DataContent ,
24+ DataFileReferences ,
1625 FunctionCallSSE ,
26+ MessageChunkSSE ,
27+ PdfDataFormat ,
1728 QueryRequest ,
18- SingleFileReference ,
1929 SingleDataContent ,
20- PdfDataFormat ,
21- DataContent ,
22- DataFileReferences ,
30+ SingleFileReference ,
2331 WidgetRequest ,
2432)
25- from openbb_ai import message_chunk , get_widget_data , citations , cite
26-
27- from openai .types .chat import (
28- ChatCompletionMessageParam ,
29- ChatCompletionUserMessageParam ,
30- ChatCompletionAssistantMessageParam ,
31- ChatCompletionSystemMessageParam ,
32- )
33-
34- import logging
35- import pdfplumber
36- import io
33+ from sse_starlette .sse import EventSourceResponse
3734
3835logger = logging .getLogger (__name__ )
3936
@@ -58,7 +55,7 @@ def get_copilot_description():
5855 "name" : "Vanilla Agent PDF" ,
5956 "description" : "A vanilla agent that can handle PDF data as part of its response." ,
6057 "image" : "https://github.com/OpenBB-finance/copilot-for-terminal-pro/assets/14093308/7da2a512-93b9-478d-90bc-b8c3dd0cabcf" ,
61- "endpoints" : {"query" : "http://localhost:7777 /v1/query" },
58+ "endpoints" : {"query" : "/v1/query" },
6259 "features" : {
6360 "streaming" : True ,
6461 "widget-dashboard-select" : True ,
@@ -75,8 +72,12 @@ async def query(request: QueryRequest) -> EventSourceResponse:
7572
7673 # We only automatically fetch widget data if the last message is from a
7774 # human, and widgets have been explicitly added to the request.
75+ last_message = request .messages [- 1 ]
76+ orchestration_requested = (
77+ last_message .role == "ai" and last_message .agent_id == "openbb-copilot"
78+ )
7879 if (
79- request . messages [ - 1 ]. role == "human"
80+ ( last_message . role == "human" or orchestration_requested )
8081 and request .widgets
8182 and request .widgets .primary
8283 ):
0 commit comments