希望大家多多支持,DeepSeekers 第一个全面拥抱 deepseek 的 AI Agent 框架,开源中

deepseekers(标准版)

deepseekers 是个啥

轻量级多 Agent 协作 AI Agent 框架(标准版)

会专注于几个适合引入 AI 的领域、例如翻译协作、数据分析、辅助开发。专注几个领域深挖,收集问题形成针对这些领域的解决方案。通过Agent增强LLM稳定性、可控性,从而提升 Agent 价值。

应用场景

  • 翻译协作
  • 数据分析
  • 辅助开发

特点

  • 面向落地,每一行代码都是为了 AI 能够触地而写
  • 不做通用,通过不断实践来探究 AI 领域的特定领域的落脚点,通过对于业务深入了解,通过先验来减少不必要问题
  • 通过机器学习加持,压缩 LLM 自由度
  • 无感切入,希望无需任何成本,就可以将 LLM 引入到现有系统,甚至渗透到函数这一个基础的单元
  • 对于 标准版 希望他不仅仅是一个 Agent 框架,而是一版教你如何写自己 Agent 的过程书,每一次提交都可能是一个 python 的语法,都是一个解决方案,一个特征
  • 他是变化的,不过引入新的特征,以便于适应当先 LLM 快速的迭代
  • 最小集,希望在不断跟随 LLM 过程让版本切换成本达到最小

example

😀 hello 第一行代码

初始化 client 🎉

一切从 Hello world 开始,你的 deepseeker ✈️ 之旅也是从 Hello 例子开始。首先初始化一个 client ,client 对应一个 LLM 供应商,或者对应本地起的 LLM 服务,例如 ollama。个人这里并不推荐使用。

python 复制代码
client =  DeepSeekClient(
        name="deepseek-client",
        api_key = DEEPSEEK_API_KEY,
        base_url = DEEPSEEK_BASE_URL)

需要准备一个 api_key deepseek 关注注册一个账号,因为是需要 api_key

准备系统消息(SystemMessage)和用户消息(HumanMessage)

python 复制代码
system_message = SystemMessage(content="you are very help assistant")
human_message = HumanMessage(content="write hello world in python")

这里 system_message 设计比较灵活,可以通过多种方式创建 system_message,在后面例子大家就能看到更多方式来定义 system_message

定义一个 🤖 Agent

python 复制代码
agent = Agent(
    name="deepseeker_001",
    model_name="deepseek-chat",
    system_message=system_message,
    client=client,
    context={}
    )

在 Agent 设计时,借鉴了很多框架中 Agent 模样,具体 Agent 应该长什么样呢? 最后的设计是想让开发人员只要较少的参数。就可以创建出来一个 Agent,而且还能够满足 Agent 基本能力。所以这是现在大家看到 Agent 模样,一些基本的参数就可以创建出一个 Agent。

\examples\basic\hello.py

python 复制代码
from rich.console import Console
from rich.markdown import Markdown

from deepseekers.core import DeepSeekClient,Agent
from deepseekers.core.message import HumanMessage,SystemMessage
console = Console()

# 初始化一个 client
client = DeepSeekClient(name="deepseek-client")

# 准备系统消息(SystemMessage)和用户消息(HumanMessage)
system_message = SystemMessage(content="you are very help assistant")
human_message = HumanMessage(content="write hello world in python")

# 初始化一个 🤖 Agent
agent = Agent(
    name="deepseeker_001",
    model_name="deepseek-chat",
    system_message=system_message,
    client=client,
    context={}
    )
# 运行 Agent 💻
result = agent.run(human_message)
console.print(Markdown(result.get_text()))

demo 2 满足结构化输出,生成 🍕 数据

结构化输出,轻松接入到现有系统,我觉得结构化输出和工具调用是现代 LLM 必备的两种技能,如果还没有这 2 个技能就很难混了。接下来就通过生成 🍕 数据为演示通过 Agent 让你可以省力让 deepseek 给出结构化输出,和上一个例子重复就不再重复了。

首先是定义数据结构,这是一个嵌套数据结构,Pizza 和一个 Pizza 列表的数据

python 复制代码
class Pizza(BaseModel):
    name:str = Field(title="name of pizza",description="披萨的名称",examples=["海鲜披萨"])
    description:str = Field(title="description of pizza",description="对于披萨的简单介绍",examples=["丰富的海鲜如虾、鱿鱼和贻贝搭配番茄酱和奶酪,海洋的味道在口中爆发。"])

class PizzaList(BaseModel):
    pizza_list:List[Pizza] = Field(title="pizza list",description="给出一个披萨列表",examples=[f"""
{_json_schema_to_example(Pizza)}
"""])
python 复制代码
from rich.console import Console
from rich.markdown import Markdown
from typing import List
from pydantic import BaseModel,Field
from rich.panel import Panel
from deepseekers.core import DeepSeekClient,Agent
from deepseekers.core.message import HumanMessage,SystemMessage
from deepseekers.core.utils import _json_schema_to_example

console = Console()
# 定义数据数据结构,现在仅支持 BaseModel 类型
# 并且需要给出例子,📢这一点比较重要
class Pizza(BaseModel):
    name:str = Field(title="name of pizza",description="披萨的名称",examples=["海鲜披萨"])
    description:str = Field(title="description of pizza",description="对于披萨的简单介绍",examples=["丰富的海鲜如虾、鱿鱼和贻贝搭配番茄酱和奶酪,海洋的味道在口中爆发。"])

class PizzaList(BaseModel):
    pizza_list:List[Pizza] = Field(title="pizza list",description="给出一个披萨列表",examples=[f"""
{_json_schema_to_example(Pizza)}
"""])

# 初始化一个 client
client = DeepSeekClient(name="deepseek-client")

system_message = SystemMessage(content="you are very help assistant")
human_message = HumanMessage(content="生成 10 种以上披萨")


agent = Agent(
    name="pizza_generator",
    model_name="deepseek-chat",
    system_message=system_message,
    client=client,
    context={},
    # 📢  需要在初始化 Agent 时候指定一些输出数据结构
    result_type=PizzaList
    )

result = agent.run(human_message)
for pizza in result.get_data().pizza_list:
    console.print(Panel(pizza.description,title=f"🍕 {pizza.name}"))
    

通过 deps 来首先动态获取资源

有时候会有这样的场景,我们需要发起请求时候获取一些资源作为 LLM 请求时候的背景知识。这时候需要依赖,这种依赖可能是网络资源、数据库资源和文件系统。

python 复制代码
@dataclass
class MyDeps:  
    http_client: httpx.Client
    url:str = "http://127.0.0.1:8000/pizzas"

然后将 system message 用一个函数包裹起来,函数形成欢迎,因为只有函数在执行才会确定,不然函数通过参数传入一些不确定因素,这个 Deps 只要运行 Agent 时候,执行 system_message 才会在运行获取数据。

python 复制代码
def system_message(deps:MyDeps)->SystemMessage:
    response = deps.http_client.get(deps.url)
    if response.status_code == 200:
        pizza_list = response.json()
    
        return SystemMessage(content=f"""
Pizzas
{json.dumps(pizza_list)}
""")
    else:
        console.print_exception(f"请求失败,状态码:{response.status_code}")
        console.print(response.text)
        return SystemMessage(content="")
python 复制代码
result = agent.run(human_message,{'deps':deps})
python 复制代码
import json
from typing import List,Union
import httpx
from dataclasses import dataclass
from deepseekers.core import DeepSeekClient,Agent
from deepseekers.core.message import HumanMessage,SystemMessage
from deepseekers.core.utils import _json_schema_to_example

from pydantic import BaseModel,Field
from rich.console import Console
console = Console()

@dataclass
class MyDeps:  
    http_client: httpx.Client
    url:str = "http://127.0.0.1:8000/pizzas"

def system_message(deps:MyDeps)->SystemMessage:
    response = deps.http_client.get(deps.url)
    if response.status_code == 200:
        pizza_list = response.json()
    
        return SystemMessage(content=f"""
Pizzas
{json.dumps(pizza_list)}
""")
    else:
        console.print_exception(f"请求失败,状态码:{response.status_code}")
        console.print(response.text)
        return SystemMessage(content="")


# 初始化一个 client
client = DeepSeekClient(name="deepseek-client")

human_message = HumanMessage(content="从 Pizzas 数据筛选配料中有蘑菇的披萨")


agent = Agent(
    name="pizza_generator",
    model_name="deepseek-chat",
    system_message=system_message,
    client=client,
    context={},
    )

with httpx.Client() as client:
    deps = MyDeps(http_client=client)
    result = agent.run(human_message,{'deps':deps})
    print(result.get_text())
    
相关推荐
聚客AI9 分钟前
大模型学习进阶路线图:从Prompt到预训练的四阶段全景解析
人工智能·llm·掘金·日新计划
晓131314 分钟前
第七章 OpenCV篇——角点检测与特征检测
人工智能·深度学习·计算机视觉
DeepSeek大模型官方教程44 分钟前
NLP之文本纠错开源大模型:兼看语音大模型总结
大数据·人工智能·ai·自然语言处理·大模型·产品经理·大模型学习
MidJourney中文版1 小时前
深度报告:中老年AI陪伴机器人需求分析
人工智能·机器人
王上上2 小时前
【论文阅读41】-LSTM-PINN预测人口
论文阅读·人工智能·lstm
智慧化智能化数字化方案2 小时前
69页全面预算管理体系的框架与落地【附全文阅读】
大数据·人工智能·全面预算管理·智慧财务·智慧预算
PyAIExplorer2 小时前
图像旋转:从原理到 OpenCV 实践
人工智能·opencv·计算机视觉
Wilber的技术分享2 小时前
【机器学习实战笔记 14】集成学习:XGBoost算法(一) 原理简介与快速应用
人工智能·笔记·算法·随机森林·机器学习·集成学习·xgboost
19892 小时前
【零基础学AI】第26讲:循环神经网络(RNN)与LSTM - 文本生成
人工智能·python·rnn·神经网络·机器学习·tensorflow·lstm
burg_xun3 小时前
【Vibe Coding 实战】我如何用 AI 把一张草图变成了能跑的应用
人工智能