Spaces:
Runtime error
Runtime error
import openai | |
import json | |
import os | |
from dotenv import load_dotenv | |
#from pyairtable import Table | |
import requests | |
import streamlit as st | |
load_dotenv() | |
openai.api_key = os.getenv("OPENAI_API_KEY") | |
rapid_api_key = os.getenv("X-RapidAPI-Key") | |
#airtable_api_key = os.getenv("AIRTABLE_API_KEY") | |
#table = Table(airtable_api_key, "appHojHIE4y8gVBgc", "tbldUUKZFngr78ogg") | |
function_descriptions = [ | |
{ | |
"name": "get_stock_movers", | |
"description": "Get the stocks that has biggest price/volume moves, e.g. actives, gainers, losers, etc.", | |
"parameters": { | |
"type": "object", | |
"properties": { | |
}, | |
} | |
}, | |
{ | |
"name": "get_stock_news", | |
"description": "Get the latest news for a stock", | |
"parameters": { | |
"type": "object", | |
"properties": { | |
"performanceId": { | |
"type": "string", | |
"description": "id of the stock, which is referred as performanceID in the API" | |
}, | |
}, | |
"required": ["performanceId"] | |
} | |
}, | |
{ | |
"name": "add_stock_news_airtable", | |
"description": "Add the stock, news summary & price move to Airtable", | |
"parameters": { | |
"type": "object", | |
"properties": { | |
"stock": { | |
"type": "string", | |
"description": "stock ticker" | |
}, | |
"move": { | |
"type": "string", | |
"description": "price move in %" | |
}, | |
"news_summary": { | |
"type": "string", | |
"description": "news summary of the stock" | |
}, | |
} | |
} | |
}, | |
] | |
def get_stock_news(performanceId): | |
url = "https://morning-star.p.rapidapi.com/news/list" | |
querystring = {"performanceId":performanceId} | |
headers = { | |
"X-RapidAPI-Key": rapid_api_key, | |
"X-RapidAPI-Host": "morning-star.p.rapidapi.com" | |
} | |
response = requests.get(url, headers=headers, params=querystring) | |
short_news_list = response.json()[:5] | |
print("response:", response, " json response:", short_news_list) | |
return short_news_list | |
def get_stock_movers(): | |
url = "https://morning-star.p.rapidapi.com/market/v2/get-movers" | |
headers = { | |
"X-RapidAPI-Key": rapid_api_key, | |
"X-RapidAPI-Host": "morning-star.p.rapidapi.com" | |
} | |
response = requests.get(url, headers=headers) | |
return response.json() | |
def function_call(ai_response): | |
function_call = ai_response["choices"][0]["message"]["function_call"] | |
function_name = function_call["name"] | |
arguments = function_call["arguments"] | |
if function_name == "get_stock_movers": | |
return get_stock_movers() | |
elif function_name == "get_stock_news": | |
performanceId = eval(arguments).get("performanceId") | |
return get_stock_news(performanceId) | |
else: | |
return | |
query = "Give me a summary of what happend to the tesla stocks today?" | |
messages = [{"role":"user","content":query}] | |
response = openai.ChatCompletion.create( | |
model="gpt-3.5-turbo-0613", | |
messages=messages, | |
functions = function_descriptions, | |
function_call="auto" | |
) | |
st.subheader(response) | |