Skip to content

Commit 8d9d29c

Browse files
Merge pull request #204 from restackio/addRestackDocs
Agent with Video: add docs context
2 parents b8d0886 + 3fc6c18 commit 8d9d29c

File tree

6 files changed

+53
-19
lines changed

6 files changed

+53
-19
lines changed

agent_chat/src/agents/agent.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from datetime import timedelta
22

33
from pydantic import BaseModel
4-
from restack_ai.agent import agent, import_functions, log
4+
from restack_ai.agent import agent, import_functions, log, AgentError
55

66
with import_functions():
77
from src.functions.llm_chat import LlmChatInput, Message, llm_chat
@@ -23,15 +23,22 @@ def __init__(self) -> None:
2323

2424
@agent.event
2525
async def messages(self, messages_event: MessagesEvent) -> list[Message]:
26-
log.info(f"Received messages: {messages_event.messages}")
27-
self.messages.extend(messages_event.messages)
28-
assistant_message = await agent.step(
29-
function=llm_chat,
30-
function_input=LlmChatInput(messages=self.messages),
31-
start_to_close_timeout=timedelta(seconds=120),
32-
)
33-
self.messages.append(assistant_message)
34-
return self.messages
26+
try:
27+
log.info(f"Received messages: {messages_event.messages}")
28+
self.messages.extend(messages_event.messages)
29+
30+
log.info(f"Calling llm_chat with messages: {self.messages}")
31+
assistant_message = await agent.step(
32+
function=llm_chat,
33+
function_input=LlmChatInput(messages=self.messages),
34+
start_to_close_timeout=timedelta(seconds=120),
35+
)
36+
37+
self.messages.append(assistant_message)
38+
return self.messages
39+
except Exception as e:
40+
log.error(f"Error in messages: {e}")
41+
raise AgentError(f"Error in messages: {e}")
3542

3643
@agent.event
3744
async def end(self, end: EndEvent) -> EndEvent:

agent_telephony/twilio/livekit-trunk-setup/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
.venv
33
.env
44
uv.lock
5+
inbound_trunk.json

agent_telephony/twilio/livekit-trunk-setup/inbound_trunk.json

Lines changed: 0 additions & 8 deletions
This file was deleted.

agent_video/src/agents/agent.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
with import_functions():
77
from src.functions.llm_chat import LlmChatInput, Message, llm_chat
8-
8+
from src.functions.context_docs import context_docs
99

1010
class MessagesEvent(BaseModel):
1111
messages: list[Message]
@@ -42,4 +42,11 @@ async def end(self, end: EndEvent) -> EndEvent:
4242

4343
@agent.run
4444
async def run(self) -> None:
45+
docs = await agent.step(function=context_docs)
46+
system_prompt=f"""
47+
You are an interactive video assistant, your answers will be used in text to speech so try to keep answers short and concise so that interaction is seamless.
48+
You can answer questions about the following documentation:
49+
{docs}
50+
"""
51+
self.messages.append(Message(role="system", content=system_prompt))
4552
await agent.condition(lambda: self.end)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from restack_ai.function import function, log
2+
import aiohttp
3+
4+
5+
async def fetch_content_from_url(url: str) -> str:
6+
async with aiohttp.ClientSession() as session:
7+
async with session.get(url) as response:
8+
if response.status == 200:
9+
return await response.text()
10+
else:
11+
log.error("Failed to fetch content", status=response.status)
12+
raise Exception(f"Failed to fetch content: {response.status}")
13+
14+
15+
@function.defn()
16+
async def context_docs() -> str:
17+
try:
18+
docs_content = await fetch_content_from_url("https://docs.restack.io/llms-full.txt")
19+
log.info("Fetched content from URL", content=len(docs_content))
20+
21+
return docs_content
22+
23+
except Exception as e:
24+
log.error("llm_chat function failed", error=str(e))
25+
raise

agent_video/src/services.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from src.functions.llm_chat import llm_chat
1111
from src.functions.pipeline import pipecat_pipeline
1212
from src.workflows.room import RoomWorkflow
13+
from src.functions.context_docs import context_docs
1314

1415

1516
async def main() -> None:
@@ -19,6 +20,7 @@ async def main() -> None:
1920
functions=[
2021
llm_chat,
2122
pipecat_pipeline,
23+
context_docs,
2224
],
2325
)
2426

0 commit comments

Comments
 (0)