mr_mvp_dev / agent_tools /Hybrid_Rag_agent.py
srivatsavdamaraju's picture
Upload 173 files
b2315b1 verified
import asyncio
from agents import Agent, ItemHelpers, MessageOutputItem, Runner, trace
from agents import Agent, Runner, function_tool
import asyncio
import os
import dotenv
from agents import Agent, ModelSettings, function_tool , Runner
@function_tool
def vector_db_agent_tool(query: str) -> str:
print("vector_db_agent(query)")
@function_tool
def neo4j_agent_tool(query: str) -> str:
print("neo4j_agent(query)")
# async def main():
# result = await Runner.run(
# Dataframe_agent,
# "so analayse the df and give some insights on it",
# )
# print(result)
# if __name__ == "__main__":
# asyncio.run(main())
#custom agents for the project and why
orchestrator_agent = Agent(
name="orchestrator_agent",
instructions=(
"You are a translation agent. You use the tools given to you to translate."
"If asked for multiple translations, you call the relevant tools in order."
"You never translate on your own, you always use the provided tools."
),
tools=[
vector_db_agent_tool.as_tool(
tool_name="vector_db_agent",
tool_description="Analyse the dataframe and give some insights on it and will use for reports and visualizations",
),
neo4j_agent_tool.as_tool(
tool_name="neo4j_agent",
tool_description="Analyse the dataframe and give some insights on it and will use for reports and visualizations",
),
],
)
synthesizer_agent = Agent(
name="synthesizer_agent",
instructions="You inspect translations, correct them if needed, and produce a final concatenated response.",
)
async def main():
msg = input("Hi! What would you like translated, and to which languages? ")
# Run the entire orchestration in a single trace
with trace("Orchestrator evaluator"):
orchestrator_result = await Runner.run(orchestrator_agent, msg)
for item in orchestrator_result.new_items:
if isinstance(item, MessageOutputItem):
text = ItemHelpers.text_message_output(item)
if text:
print(f" - Translation step: {text}")
synthesizer_result = await Runner.run(
synthesizer_agent, orchestrator_result.to_input_list()
)
print(f"\n\nFinal response:\n{synthesizer_result.final_output}")
if __name__ == "__main__":
asyncio.run(main())