parent
cedda9662e
commit
8f6d5fdac7
@ -1,48 +0,0 @@
|
||||
import aiohttp
|
||||
from typing import Annotated
|
||||
from livekit.agents import llm
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
# Define the path to the log file
|
||||
LOG_FILE_PATH = 'assistant_functions.txt'
|
||||
|
||||
def log_message(message: str):
|
||||
"""Append a message to the log file with a timestamp."""
|
||||
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
with open(LOG_FILE_PATH, 'a') as log_file:
|
||||
log_file.write(f"{timestamp} - {message}\n")
|
||||
|
||||
# first define a class that inherits from llm.FunctionContext
|
||||
class AssistantFnc(llm.FunctionContext):
|
||||
# the llm.ai_callable decorator marks this function as a tool available to the LLM
|
||||
# by default, it'll use the docstring as the function's description
|
||||
@llm.ai_callable()
|
||||
async def get_weather(
|
||||
self,
|
||||
# by using the Annotated type, arg description and type are available to the LLM
|
||||
location: Annotated[
|
||||
str, llm.TypeInfo(description="The location to get the weather for")
|
||||
],
|
||||
) -> str:
|
||||
"""Called when the user asks about the weather. This function will return the weather for the given location."""
|
||||
log_message(f"getting weather for {location}")
|
||||
url = f"https://wttr.in/{location}?format=%C+%t"
|
||||
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url) as response:
|
||||
log_message(f"response: {response}")
|
||||
if response.status == 200:
|
||||
weather_data = await response.text()
|
||||
|
||||
content: str = f"The weather in {location} is {weather_data}."
|
||||
log_message(f"content: {content}")
|
||||
|
||||
# response from the function call is returned to the LLM
|
||||
# as a tool response. The LLM's response will include this data
|
||||
return content
|
||||
|
||||
else:
|
||||
log_message(f"Failed to get weather data, status code: {response.status}")
|
||||
return f"Failed to get weather data, status code: {response.status}"
|
||||
|
Loading…
Reference in new issue