forked from Arize-ai/openinference
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrequirement_agent.py
More file actions
56 lines (43 loc) · 1.59 KB
/
requirement_agent.py
File metadata and controls
56 lines (43 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import asyncio
import sys
import traceback
from beeai_framework.agents.experimental import RequirementAgent
from beeai_framework.agents.experimental.requirements.conditional import ConditionalRequirement
from beeai_framework.backend import UserMessage
from beeai_framework.backend.chat import ChatModel
from beeai_framework.backend.types import ChatModelParameters
from beeai_framework.errors import FrameworkError
from beeai_framework.memory import UnconstrainedMemory
from beeai_framework.tools.think import ThinkTool
from beeai_framework.tools.tool import AnyTool
from beeai_framework.tools.weather.openmeteo import OpenMeteoTool
from examples.setup import setup_observability
setup_observability()
llm = ChatModel.from_name("ollama:granite3.3:8b", ChatModelParameters(temperature=0.1))
tools: list[AnyTool] = [
ThinkTool(),
OpenMeteoTool(),
]
async def main() -> None:
memory = UnconstrainedMemory()
await memory.add(UserMessage("My name is Thomas."))
agent = RequirementAgent(
llm=llm,
tools=tools,
memory=memory,
requirements=[
ConditionalRequirement(ThinkTool, force_at_step=1),
ConditionalRequirement(OpenMeteoTool, force_at_step=2),
],
)
prompt = "What's the current weather in Las Vegas?"
response = await agent.run(
prompt, max_retries_per_step=3, total_max_retries=10, max_iterations=20
)
print("Agent 🤖 : ", response.last_message.text)
if __name__ == "__main__":
try:
asyncio.run(main())
except FrameworkError as e:
traceback.print_exc()
sys.exit(e.explain())