希望大家多多支持,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())
    
相关推荐
WBingJ几秒前
深度学习基础:线性代数本质2——线性组合、张成的空间与基
人工智能·深度学习·线性代数
小枫小疯2 分钟前
pytorch训练权重转化为tensorflow模型的教训
人工智能·pytorch·tensorflow
DO_Community11 分钟前
用不了 Manus ?其实你能用 Llama或DeepSeek 做个自己的 AI Agent
人工智能·机器学习·llama
山北雨夜漫步15 分钟前
机器学习 Day03 Numpy基本使用
人工智能·机器学习
AI技术控15 分钟前
计算机视觉算法实战——昆虫识别检测(主页有源码)
人工智能·算法·计算机视觉
o0o_-_16 分钟前
【langchain/入门】使用langchain调用本地部署的大模型(以llama.cpp以及ollama为例)
langchain·ollama·llama.cpp·deepseek
Wis4e1 小时前
数据挖掘导论——第二章:数据
人工智能·数据挖掘
蜡笔小新星1 小时前
OpenCV中文路径图片读写终极指南(Python实现)
开发语言·人工智能·python·opencv·计算机视觉
六月的翅膀1 小时前
C++/OpenCV:Mat初始化赋值误区
人工智能·opencv·计算机视觉
好评笔记1 小时前
AIGC视频生成模型:慕尼黑大学、NVIDIA等的Video LDMs模型
人工智能·深度学习·机器学习·计算机视觉·aigc·transformer·面试八股