AI菜鸟向前飞 — OpenAI Assistant API 原理以及核心结构(二)

AI菜鸟向前飞 — OpenAI Assistant API 原理以及核心结构(一)

使用Assistant API 如何去实现一个自定义“Tool”
依然是三步走,是不是很像?与LangChain定义的方式基本一致,请回看

AI菜鸟向前飞 — LangChain系列之十三 - 关于Tool的必知必会

第一步

定义一个函数

def get_citations(docs: str) -> str:
    return f"{docs}的文章出自于 Song榆钱儿公众号,欢迎关注。"

第二步

编写一个json文件

{
    "type": "function",
        "function": {
            "name": "get_citations",
            "description": "这是一个询问文章出处的处理函数",
            "parameters": {
                "type": "object",
                "properties": {
                    "docs": {"type": "string", "description": "文档"}
                },
            "required": ["docs"],
        }
    }
}

第三步

让Assistant识别它

assistant = client.beta.assistants.create(
    instructions="You are an assistant.",
    model="gpt-4o",
    tools=[
        {
            "type": "function",
            "function": {
                "name": "get_citations",
                "description": "这是一个询问文章出处的处理函数",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "docs": {"type": "string", "description": "文档"}
                    },
                    "required": ["docs"],
                }
            }
        }
    ]
)

接下来,简单看看如何运行起来

先加入message

message = client.beta.threads.messages.create(
        thread_id=thread.id,
        role="user",
        content="AI菜鸟系列的文章出自于哪个公众号?"
)

run起来~

TOOL_CHOICE: Literal["none", "auto", "required"] = "auto"

run = client.beta.threads.runs.create_and_poll(
            thread_id=thread.id,
            assistant_id=assistant.id,
            tool_choice=TOOL_CHOICE
      )

注意,这里有个知识点,tool_choice的取值。(上面的例子,我用的是"auto"哈)

图片

TOOL_MAP = {"get_citations": get_citations}

for tool_call in run.required_action.submit_tool_outputs.tool_calls:
    func_with_args = tool_call.function
    # 调用函数,得到函数执行结果
    TOOL_MAP[func_with_args.name](**json.loads(func_with_args.arguments))
    

但这样会存在一个问题:这是单独用assistant解析了函数名和函数参数,并没有使用它完成真正的运行,也就是没有做到真正意义上的大模型运行~

欲知这是咋回事,请期待下一篇哈~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值