Spaces:
Sleeping
Sleeping
from pydantic.v1 import BaseModel, Field | |
from langchain.tools import BaseTool | |
from typing import Optional, Type | |
from langchain.tools import StructuredTool | |
import yfinance as yf | |
from typing import List | |
from datetime import datetime,timedelta | |
import pandas as pd | |
def investment_advisor_tools(): | |
def news_summary(df_search): | |
"Take df_search from the user input message. Summarize news on the selected stockticker and provide Sentiment: positive/negative/neutral to the user." | |
return eval(df_search) | |
class newsSummaryInput(BaseModel): | |
"""Input for summarizing articles.""" | |
df_search: str = Field(..., description="News articles.") | |
class newsSummaryTool(BaseTool): | |
name = "Summarize news on the stockticker" | |
description = """Useful for summarizing the newest article on a selected stockticker.""" | |
def _run(self, df_search=str): | |
position = news_summary(df_search) | |
return {"position": position} | |
def _arun(self,df_search=str): | |
raise NotImplementedError("This tool does not support async") | |
args_schema: Optional[Type[BaseModel]] = newsSummaryInput | |
def analyze_prices(): | |
"""Take historical prices, analyze them and answer user's questions.""" | |
df_prices=pd.read_csv('../df_history.csv') | |
return df_prices | |
class pricesInput(BaseModel): | |
"""Input for summarizing articles.""" | |
stockticker: str = Field(..., description="stockticker name") | |
class pricesTool(BaseTool): | |
name = "Get prices from csv file analyze them and answer questions" | |
description = """Useful for analyzing historical stock prices.""" | |
def _run(self, stockticker=str): | |
df_prices = analyze_prices() | |
return {"prices": df_prices} | |
def _arun(self, stockticker=str): | |
raise NotImplementedError("This tool does not support async") | |
args_schema: Optional[Type[BaseModel]] = pricesInput | |
tools_reccommend = [ | |
StructuredTool.from_function( | |
func=newsSummaryTool, | |
args_schema=newsSummaryInput, | |
description="Summarize articles.", | |
) | |
#, | |
#StructuredTool.from_function( | |
# func=pricesTool, | |
# args_schema=pricesInput, | |
# description="Analyze stock prices.", | |
#) | |
] | |
return tools_reccommend |