Skip to main content

A micro agent for open_ai llm model

Project description

MICRO_AGENT

micro-agent 是一个轻量级的使用openAI模型服务的智能代理,将程序调用openAI API的过程进行了封装,使得用户可以调用函数一样与大模型进行对话。同时,micro-agent 包含了简单的会话上下文窗口管理,使得发送给大模型的对话历史可以根据token数量进行调整。同时,micro-agent 支持将本地函数注册到代理中,使得代理可以调用本地函数,使用最简单的方式构造agent。

安装

使用pip安装:

pip install wee_agent

使用

1. 使用前

使用前,应该将 OPEN_API_KEY 配置到环境变量中:

```shell
export OPEN_API_KEY=your_open_api_key
```

或者,在代码的根目录中,创建一个.env文件,写入:

```shell
OPEN_API_KEY=your_open_api_key
```

2. 基础使用

只需实例化一个代理,然后可以像调用函数一样直接调用openAI API的对话功能。

from wee_agent import WeeAgent

agent = WeeAgent()
ret = agent("hello")
print(ret)

要实现多轮对话,只需要重复调用即可:

from wee_agent import WeeAgent

agent = WeeAgent()
print(agent('hi,I am Bob. '))
# 显示:Hello, Bob! How can I assist you today?
print(agent('What is my name?'))
# 显示:Your name is Bob. How can I help you today, Bob?

代理会记录与用户沟通的历史对话,并能自动根据token数量调整发送给llm的对话历史窗口。

添加tool

micro_agent可以非常方便的将本地函数注册到agent中,使得micro_agent对象成为一个智能体。 注册的函数必须满足以下要求:

  • 注册的函数,必须进行类型注释,指定参数的类型
  • 函数的返回值,必须为文本格式,以便于大模型理解。目前不支持使用其他格式。

先使用set_tool装饰器,装饰本地函数,然后调用register_tool方法注册函数,最后调用agent对象,传入提示词,即可调用本地函数。

from wee_agent import WeeAgent, set_tool


# set_tool是一个装饰器,用于注册函数
# 定义本地函数
@set_tool
def plus(a: int, b: int) -> str:
   """
    计算两个数的和
    :param a: 第一个数
    :param b: 第二个数
    :return: 两个数的和
    """
   return str(a + b)


agent = WeeAgent()

# 注册函数
agent.register_tool(name='plus', tool=plus)

# 调用函数
print(agent("计算1+2等于多少"))

# 输出:1+2等于3

3. 高级用法

3.1 自定义提示词

在实例化agent时,可以传入写好的提示词作为参数:

from wee_agent import WeeAgent

agent = WeeAgent(prompt="你是一名心里咨询师,善于解决心里问题...")
print(agent("我感到很烦躁"))

或者:

from wee_agent import WeeAgent

agent = WeeAgent()
agent.set_prompts("你是一名心里咨询师,善于解决心里问题...")
print(agent("我感到很烦躁"))

3.2 流式输出

在初始化类时,可以设置streaming参数为True,使得输出更加流畅:

from wee_agent import WeeAgent

agent = WeeAgent(stream=True)

agent("hello")

# 在终端上逐token输出:Hello! How can I assist you today?

3.3 控制对话窗口问答比例

micro_agent可以控制每次问答时,发送给大模型的对话历史占整个对话历史的比例。默认为0.9,即每次问答时,发送给大模型的对话历史占整个对话历史的90%。对话历史里包含了prompt。如果你需要大模型回答更多内容,可以将这个比例调低。同时,这也会导致对话历史信息降低。

from wee_agent import WeeAgent

agent = WeeAgent(
   input_token_ratio=0.5  # 提问和回答各占对话窗口的50%
)
...

3.4 重构本类

为了更加方便的使用,可以继承MicroAgent类,然后使用装饰器注册函数:

from wee_agent import WeeAgent, set_tool
from datetime import datetime


class MyAgent(WeeAgent):

   @staticmethod
   @set_tool
   def get_time():
      """
      获取当前时间
      :return: 字符串格式的当前时间
      """
      return f"现在是{datetime.now().strftime('%Y年%m月%d日%H时%M分%S秒')}"


agent = MyAgent()
print(agent("请告诉我现在的时间"))

# 输出:现在是2024年3月19日18时39分24秒。如果您需要更准确的时间,请让我知道,我可以为您提供更具体的时分秒信息。

请注意,注册的函数,必须满足以下要求:

  1. 注册的函数,必须进行类型注释,指定参数和返回值的类型,
  2. 同时必须提供详细的,严格格式的函数文档,用于生成函数的schema信息,供大模型理解。其中:第一行必须为函数的功能说明。参数的说明,
    • 必须以:param 开头,
    • 返回值必须使用:return 开头。
  3. 函数的返回值必须为文本格式,以便于大模型理解。目前不支持使用其他格式。

下一步计划

因为目前openAI的api格式几乎成为了大模型调用的标杆,修改本模块,让它可以支持其他开源模型,例如Ollama、vllm等。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wee_agent-0.1.3.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

wee_agent-0.1.3-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file wee_agent-0.1.3.tar.gz.

File metadata

  • Download URL: wee_agent-0.1.3.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.4

File hashes

Hashes for wee_agent-0.1.3.tar.gz
Algorithm Hash digest
SHA256 dc3fee952edb223b329a7c37a896c8684c380c549cc96afab6c4eac26d9a9115
MD5 e06089ed6eda65174f1d1350d9e5106d
BLAKE2b-256 358dafb57828a76bdc3d737350b1956655cc4c1cec0897410735e76525feb658

See more details on using hashes here.

File details

Details for the file wee_agent-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: wee_agent-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 21.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.4

File hashes

Hashes for wee_agent-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9c36c1909a3bc4a3fdeb3c2635f0106fdddeefc1936d2c769087c1e3465c3ab8
MD5 48e3da23616e0c0527eecca71d986c4a
BLAKE2b-256 d8955887f9f634372c9e0165ac5b91b745c6639ddc721b72b062a547ca083c75

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page