12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- from agno.agent import Agent
- from agno.memory.v2.memory import Memory
- from agno.memory.v2.db.sqlite import SqliteMemoryDb
- from agno.models.openai import OpenAILike
- from agno.storage.sqlite import SqliteStorage
- import os
- from textwrap import dedent
- from dotenv import load_dotenv
- load_dotenv()
- # Initialize OpenLIT instrumentation
- from langfuse._client.client import Langfuse
- import openlit
- langfuse = Langfuse(
- public_key=os.getenv("LANGFUSE_PUBLIC_KEY"),
- secret_key=os.getenv("LANGFUSE_SECRET_KEY"),
- host=os.getenv("LANGFUSE_HOST"),
- )
- openlit.init(tracer=langfuse._otel_tracer, disable_batch=True)
- agent_storage = "./tmp/agents.db"
- simple_info_agent_prompt = dedent('''
- 你是一个专业的信息收集助手。你的任务是收集用户的姓名、年龄和用户感兴趣的行业。
- 信息收集策略:
- 1. 使用开放式问题引导用户提供更多信息
- 2. 对模糊的信息进行澄清和确认
- 3. 根据上下文,智能地推断和补充相关信息
- 4. 保持对话的自然性和连贯性
- 对话要求:
- 1. 保持友好、专业的语调
- 2. 每次回复要简洁明了
- 3. 适时总结已收集的信息
- 4. 当用户询问一些其他问题时,请礼貌地告诉用户,你是一个信息收集助手,不回答其它不相关问题。提醒用户还没收集完成。
- ''')
- memory = Memory(
- model=OpenAILike(
- id="qwen3-32b",
- api_key=os.getenv("BAILIAN_API_KEY"),
- base_url=os.getenv("BAILIAN_API_BASE_URL"),
- request_params={"extra_body": {"enable_thinking": False}},
- ),
- db=SqliteMemoryDb(table_name="simple_info_agent_memory", db_file=agent_storage),
- )
- simple_info_agent = Agent(
- name="SimpleInfoAgent",
- model=OpenAILike(
- id="qwen3-32b",
- api_key=os.getenv("BAILIAN_API_KEY"),
- base_url=os.getenv("BAILIAN_API_BASE_URL"),
- request_params={"extra_body": {"enable_thinking": False}},
- ),
- instructions=simple_info_agent_prompt,
- storage=SqliteStorage(table_name="simple_info_agent", db_file=agent_storage),
- # 记忆
- memory=memory,
- add_datetime_to_instructions=True,
- add_history_to_messages=True,
- num_history_responses=5,
- markdown=True,
- )
|