Agently

Latest version: v3.4.0.5

Safety actively analyzes 681790 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 5

127.0.0.17890

instruct:
输出语言: 中文
output:
page_topic:
$type: str
$desc: ""
summary:
$type: str
$desc: ""


- Python文件:
python
import Agently

agent_factory = (
Agently.AgentFactory()
.set_settings("model.Google.auth.api_key", "")
.set_settings("current_model", "Google")
)

agent = agent_factory.create_agent()

print(
agent
.load_yaml_prompt(
path="./yaml_prompt.yaml",
你也可以用下面方式直接传递YAML格式的字符串
yaml=yaml_str
variables = {
"user_input": "http://Agently.tech",
}
)
.start()
)


- 运行结果:
json
{
"page_topic": "易用、灵活、高效的开源大模型应用开发框架",
"summary": "Agently是一个开源的大模型应用开发框架,它可以让开发者轻松地使用大模型来构建应用程序。Agently的特点包括:\n\n* 语法简单易学,5分钟开始使用\n* 安装简单,使用pip install -U Agently即可\n* 使用灵活,可以通过几行代码指定大模型、鉴权信息等信息\n* 支持链式调用,像调用函数一样和Agent实例交互\n* 为工程开发者设计,应用开发灵活性高\n* 支持传递结构化数据灵活表达请求,管理Agent实例设定信息,提供自定义函数\n* 支持监听流式输出,使用Agently Workflow将复杂任务切分成块\n* 架构设计深度,解构了大模型驱动的Agent结构,维护了模型请求前后置信息流处理工作流等基础原子要件\n* 提供能力插件、工作流管理方案等增强开发者在应用层的表达丰富度"
}


使用YAML格式数据管理你的工作流

`[Agently Workflow: YAML Flow]`

> `[🧪测试] 这个功能后续可能会调整用法或者语法`

我们向您提供一种实验性的通过YAML格式数据管理工作流的方法,通过这种管理方法,您可以对工作流中的工作块定义,以及工作块间的连接关系进行更加方便直观的管理。这个功能将为您呈现我们的初步想法,我们还会持续完善这个能力,强化这种表达方法的表达能力。

同时,我们也在这项新能力中预置了`开始(Start)`,`用户输入(UserInput)`,`打印结果(Print)`这三个基本工作块,帮助您更快速的构建自己的工作流。通过阅读这三个工作块的定义方法,也能够对您创建自定义工作块提供思路参考。

基本用法

- YAML文件/YAML文本内容:

YAML
chunks:
start:
type: Start
user_input:
type: UserInput
placeholder: '[用户输入]: '
print:
type: Print
connections:
- start->user_input->print


- Python文件:

python
import Agently
workflow = Agently.Workflow()
你可以通过设置draw=True来输出工作流的Mermaid代码,而不是运行它
print(workflow.start_yaml(path="./yaml_file.yaml", draw=True))
workflow.start_yaml(path="./yaml_file.yaml")


- 运行结果:

shell
[用户输入]: 1+2
>>> 1+2


自定义你自己的工作块执行器

- YAML文件/YAML文本内容:

YAML
chunks:
start:
type: Start
user_input:
type: UserInput
placeholder: '[User Input]:'
我们在这里声明一个新的calculate工作块
calculate:
然后在这里添加一个calculate执行器来计算用户输入结果
在executor里指定执行器id为calc
executor: calc
print:
type: Print
connections:
然后把calculate工作块放入工作流中
- start->user_input->calculate->print


- Python file:

python
import Agently

使用函数装饰器`workflow.executor_func(<executor_id>)`
来声明一个执行器id为calc的执行器函数
workflow.executor_func("calc")
def calculate_executor(inputs, storage):
result = eval(inputs["input"])
return str(result)

workflow = Agently.Workflow()
print(workflow.start_yaml(path="./yaml_file.yaml", draw=True))
workflow.start_yaml(path="./yaml_file.yaml")


- Result:

shell
[用户输入]: 1+2
>>> 3


通过基础Prompt管理方法理解不同的Prompt生命周期

我们添加了一系列的Prompt管理方法,来帮助开发者直接管理设定给Agent实例或是单次请求的Prompt信息,设定对象不同,这些Prompt信息的生命周期也是有差别的。

当我们使用`agent.set_agent_prompt()`方法向Agent实例设定Prompt信息的时候,这些信息将被传递并存储到Agent实例的结构体内,并在这个Agent实例**每次请求模型时,都携带这些信息**,直到这个Agent实例被销毁或者回收。

- `agent.set_agent_prompt(<基础指令名>, <value>)`
- `agent.get_agent_prompt(<基础指令名>)`
- `agent.remove_agent_prompt(<基础指令名>)`

当我们使用`agent.set_request_prompt()`方法向Agent实例内部的单次请求实例设定Prompt信息的时候,这些信息将**只会在下一次请求时传递给模型**,当请求完成后,这些信息就会被清除掉,不再保留。

- `agent.set_request_prompt(<基础指令名>, <value>)`
- `agent.get_request_prompt(<基础指令名>)`
- `agent.remove_request_prompt(<基础指令名>)`

在我们之前提供的Agent指令中,通过Agent能力插件提供的方法,例如Role插件提供的`.set_role()`方法,就使用了类似`.set_agent_prompt()`的设定方法。因此,通过`.set_role()`方法设定的信息将在多次请求间保留。

而基础指令如`.input()`、`.instruct()`、`.output()`则使用了类似`.set_request_prompt()`的设定方法。因此,通过`.input()`这些方法设定的信息,在当次请求(以`.start()`命令为标志)结束后,这些信息就被清理了,下次请求时需要重新设定。

阅读[框架开发教程 - 基础指令列表](http://www.agently.tech/guide.html#_9)了解我们支持的基础指令

功能升级

- `[Agently Workflow]`: 做了大量让复杂工作流更加稳定可靠的优化。[查看详情](https://github.com/Maplemx/Agently/pull/64)
- `[框架核心]`: 重命名了基础Prompt槽位,让它们能和基础指令名保持一致。[查看详情](https://github.com/Maplemx/Agently/commit/3303aa1f7083d3ac9ddcc744f40c4adc56610939)
- `[Facility]`: 使用`Agently.lib`作为`Agently.facility`的别名,方便使用。
- `[工具: 网页浏览browse]`: 移除了对newspaper3k包的依赖,并使用BeautifulSoup4包作为浏览工具替代 [查看详情](https://github.com/Maplemx/Agently/commit/df8c69a990578ec064a3c69d15ba185623d67100)

问题修复

- `[请求插件: OpenAI]`: 修复了会导致在使用代理Proxy的时候报`await can not use on response`的错误的问题 [查看详情](https://github.com/Maplemx/Agently/commit/7643cfe159f57ee05afd55a23fbe2b594a556d53)
- `[请求插件: OAIClient]`: 修复了代理Proxy无法生效的问题 [查看详情](https://github.com/Maplemx/Agently/commit/7643cfe159f57ee05afd55a23fbe2b594a556d53)
- `[请求插件: OAIClient]`: 修复了一个导致system prompt无法正常工作的问题 [查看详情](https://github.com/Maplemx/Agently/commit/1f9d275c9c415b5eef439b95f796bb617164b0cf)
- `[Agent能力插件: Tool]`: 修复了一个因为重命名Prompt槽位导致的工具调用无法生效的问题 [查看详情](https://github.com/Maplemx/Agently/commit/48b80f85c8690e94658e5795e9191a643f663ac3)

3.5202220212021

如果我们希望我们使用的基于大语言模型工作的Agent能够在某些方面能够跟上世界的变化,我们能做什么呢?或许,给Agent添加一些技能(Skills)让它能够和真实世界发生交互,会是一个好主意。

---

HOW TO INSTALL?

npm:npm install agently

yarn:yarn add agently

HOW TO USE?

README:[English](https://github.com/Maplemx/Agently/blob/main/README.md) | [中文](https://github.com/Maplemx/Agently/blob/main/README_CN.md)

---

🤵 Agently is a framework helps developers to create amazing LLM based applications.

🎭 You can use it to create an LLM based agent instance with role set and memory easily.

⚙️ You can use Agently agent instance just like an async function and put it anywhere in your code.

🧩 With the easy-to-plug-in design, you can easily append new LLM API/private API/memory management methods/skills to your Agently agent instance.

> ⚠️ Notice: Agently is a node.js package only works on the server-side.

🥷 Author: Maplemx | 📧 Email: [maplemxgmail.com](mailto:maplemxgmail.com) | 💬 WeChat: moxinapp

⁉️ [Report bugs or post your ideas here](https://github.com/Maplemx/Agently/issues)

⭐️ Star this repo if you like it, thanks!

🤵 Agently是一个希望帮助大语言模型(LLM)应用开发者们制作出超棒的大语言模型应用(LLM Based Applications)的轻量级框架

🎭 你能够使用Agently快速而轻松地创建并管理基于大语言模型的Agent实例,并管理他们的人设和记忆,这将让客服机器人、角色扮演机器人、游戏用Agent的构造和管理更方便

⚙️ 你可以把Agently创建的Agent以及Session像一个异步函数(async function)一样使用,这将让基于大语言模型能力的自动化工作流构造更轻松,你甚至可以沿用原有的业务代码,在其中部分需要NLP算法、复杂推理或人工操作的环节,尝试把Agently提供的Agent和Session当做一个异步函数,几乎无缝地加入到代码的业务流程中

🧩 Agently在设计时考虑了对主要请求流程中节点部件的可更换性,你可以轻松地更换或定制它们,例如:添加新的LLM模型请求方法,更换私有/转发的模型请求API地址,调整Agent记忆管理方法,定制自己的模型消息解析方案等

🔀 Agently提供的独特的针对一次请求中的流式消息(Streaming Message)的消息分块及多下游分发管理方案,能够让你在接收流式消息时,一方面保留了大语言模型通过流式消息的方式带来的高速反馈敏捷性优点,另一方面又能在一次请求中做更多的事情

> ⚠️ 注意:Agently适用于Node.js的服务端而不是网页前端

🥷 作者: Maplemx | 📧 Email: [maplemxgmail.com](mailto:maplemxgmail.com) | 💬 微信: moxinapp

⁉️ [如果您发现了BUG,或者有好的点子,请在这里提交](https://github.com/Maplemx/Agently/issues)

⭐️ 如果您觉得这个项目对您有帮助,请给项目加星,感谢您的肯定和支持!

3.4.0.5

What's Changed
* Fixed broken link in Readme.md by Shreyas0410 in https://github.com/Maplemx/Agently/pull/178
* refactor: Refactored Status.py by ghimirebibek in https://github.com/Maplemx/Agently/pull/179
* update by Maplemx in https://github.com/Maplemx/Agently/pull/182
* v3.4.0.5 by Maplemx in https://github.com/Maplemx/Agently/pull/183

New Contributors
* Shreyas0410 made their first contribution in https://github.com/Maplemx/Agently/pull/178
* ghimirebibek made their first contribution in https://github.com/Maplemx/Agently/pull/179

**Full Changelog**: https://github.com/Maplemx/Agently/compare/v3.4.0.4...v3.4.0.5

3.4.0.4

Instant Mode (Former Realtime Mode)

1. Rename "Realtime" component to "Instant" to avoid improper associate to OpenAI Realtime;
2. Optimize key indexes combination expression handler and add "&" symbol support;
3. Remove ".$complete" mark for string items and add ".$delta" mark to make string items behave the same as other type items;

Response Generator

1. Rewrite ResponseGenerator component to provide 4 agentic request response generators, developers can use these alias down below to get generator type response instead of `agent.start()`:

- `agent.get_generator()`: classic response generator including events `start`, `delta`, `done`
- `agent.get_complete_generator()`: response generator including all events during request
- `agent.get_instant_generator()`: response generator including response data in Instant Mode
- `agent.get_instant_keys_generator()`: response generator including response data when specific key indexes combination occur

Read [this document for more details](https://agently.tech/guides/agentic_request/return_generator.html)

**Full Changelog**: https://github.com/Maplemx/Agently/compare/v3.4.0.3...v3.4.0.4

3.4.0.3

**New Feature:**

- **ResponseGenerator**: a better way to get streaming response generator from Agently AgenticRequest, try these codes down below to feel the better develop experience provided by **Agently Realtime x ResponseGenerator**:

python
generator = (
agent
.input("Generator 10 sentences")
.output({
"sentences": ([("str", )]),
})
.get_realtime_generator()
)

for item in generator:
print(item["key"], item["delta"])


We also provide `.get_complete_generator()` for you to get all events (including `response:delta_origin`, `response:done_origin` with detail information) or `.get_generator()` to get classic event `response:start`, `response:delta` and `response:done`.

**Updates:**

- Realtime mode will be automatically turn on when developers try to add an realtime event listener or use realtime generator, don't worry about forget to add `.use_realtime()` to your chain syntax anymore.
- use settings to control `use_realtime` status to make this status better to be used in other agent components.

**Full Changelog**: https://github.com/Maplemx/Agently/compare/v3.4.0.2...v3.4.0.3

3.4.0.2

What's Changed
* Update Realtime by Maplemx in https://github.com/Maplemx/Agently/pull/172


**Full Changelog**: https://github.com/Maplemx/Agently/compare/v3.4.0.1...v3.4.0.2

Page 1 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.