通过 Groq 后端加载Llama 模型,并调用Function call,也就是通过Groq 后端进行工具的绑定和调用

ops/2025/3/6 0:42:40/

完整代码:

import getpass
import os
from langchain.chat_models import init_chat_model
from langchain_core.tools import tool
from langchain_core.messages import HumanMessage, ToolMessage,SystemMessage# 如果没有设置 GROQ_API_KEY,则提示用户输入
if not os.environ.get("GROQ_API_KEY"):os.environ["GROQ_API_KEY"] = getpass.getpass("Enter API key for Groq: ")# 使用 @tool 装饰器注册工具函数
@tool
def abcefikfs(a: int, b: int) -> str:"""abcefikfs do nothing."""return 'ffffff'# 初始化 Llama 模型,使用 Groq 后端
llm = init_chat_model("llama3-8b-8192", model_provider="groq", temperature=0)# 将工具绑定到模型上
tools = [abcefikfs]
llm_with_tools = llm.bind_tools(tools)messages=[SystemMessage(content="请只返回最终结果,不要解释,如果没有找到结果,请返回无法找到答案")]
query = "Use function abcefikfs with a=2 and b=3 and return the result."
# print(llm_with_tools.invoke(query).tool_calls)messages = [HumanMessage(query)]
ai_msg = llm_with_tools.invoke(messages)
messages.append(ai_msg)
for tool_call in ai_msg.tool_calls:selected_tool = {"abcefikfs": abcefikfs}[tool_call["name"].lower()]tool_output = selected_tool.invoke(tool_call["args"])messages.append(ToolMessage(tool_output, tool_call_id=tool_call["id"]))messages.append(HumanMessage(content=f"The function returned: {tool_output}. Please summarize."))   
# 第二次调用:将工具输出和额外提示传回给模型,生成最终答案
response = llm.invoke(messages)
print("\nFinal Response:", response.content)

输出结果:
在这里插入图片描述
使用

llm = init_chat_model("llama3-8b-8192", model_provider="groq", temperature=0)

初始化模型时,实际上是通过 Groq 后端加载和封装了 Llama 模型。而后调用

llm_with_tools = llm.bind_tools(tools)

进行工具绑定,这个功能是由 Groq 后端提供的封装机制实现的,而不是 Llama 模型原生具备的功能
这种方式使得模型能够在生成响应时,自动识别并调用你绑定的工具函数。

  • 举例说明:
    比如你定义了一个工具函数 abcefikfs,通过 bind_tools 后,模型在解析你的查询时,如果检测到需要调用这个工具,就会生成相应的调用请求,最终由 Groq 后端处理工具调用过程,再返回结果。

总之,工具的绑定和调用是在 Groq 后端层面实现的,而非 Llama 模型自带的原生功能。

是的,代码中通过调用

llm = init_chat_model("llama3-8b-8192", model_provider="groq", temperature=0)

来初始化 Llama 模型,这里的 model_provider="groq" 就明确表明了模型调用的是 Groq 后端。

代码详细说明:

  1. 环境变量设置
    代码中首先检查并设置了 GROQ_API_KEY,这说明后续所有的 API 调用都会使用这个密钥来访问 Groq 后端服务:

    if not os.environ.get("GROQ_API_KEY"):os.environ["GROQ_API_KEY"] = getpass.getpass("Enter API key for Groq: ")
    
  2. 模型初始化
    调用 init_chat_model 时,传入了模型名称 "llama3-8b-8192" 以及 model_provider="groq"。这意味着该函数会请求 Groq 后端来加载对应的 Llama 模型:

    llm = init_chat_model("llama3-8b-8192", model_provider="groq", temperature=0)
    
  3. 工具绑定与调用
    在初始化模型之后,通过 llm.bind_tools(tools) 将工具绑定到模型上,使得模型可以在生成响应时调用预先注册的工具函数。

举例说明

假设你需要执行一个函数调用来处理简单的数值计算,模型在处理你的查询时可能识别到需要调用某个工具(比如 abcefikfs),然后它会生成一个工具调用请求。代码随后会手动解析这个请求,并调用相应的函数来获取结果,最终再将结果反馈给模型。这整个过程中,所有对模型的请求都是通过 Groq 后端来完成的。

因此,可以总结为:

  • 调用 Groq 后端: 通过 model_provider="groq" 参数确保所有 Llama 模型的推理任务都由 Groq 后端提供支持。
  • API Key 的使用: 设置 GROQ_API_KEY 保证了请求能被正确认证,从而调用 Groq 服务。

http://www.ppmy.cn/ops/163449.html

相关文章

如何停止Oracle expdp/impdp job

一、停止 expdp job举例 1.执行 expdp 命令 $ expdp rui/rui DIRECTORYdmp_dir dumpfilestudyfull_expdp.dmp FULLy logfilestudyfullexpdp.log job_nameexpdp_job2.查看在运行的作业名称 SQL> select job_name,state from dba_datapump_jobs; JOB_NAME …

0x03 http协议和分层架构

HTTP协议 简介 Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则 http协议基于TCP协议:面向连接,安全基于请求-响应模型:一次请求对应一次响应HTTP协议是无状态的协议&#xff…

颠覆NLP的魔法:深度解读Transformer架构及其核心组件

目录 颠覆NLP的魔法:深度解读Transformer架构及其核心组件 一、Transformer 架构概述 二、核心组件解析 1. Self-Attention(自注意力机制) 2. 位置编码(Positional Encoding) 3. 多头注意力(Multi-Hea…

postman请求后端接受List集合对象

后端集合 post请求,即前端请求方式

C语言:51单片机 基础知识

一、单片机概述 单片机的组成及其特点 单片机是指在一块芯片上集成了CPU、ROM、RAM、定时器/计数器和多种I/O接口电路等,具有一定规模的微型计算机。 特点: 1、单片机的存储器以ROM、RAM严格分工。 2、采用面向控制的指令系统。 3、单片机的I/O口引脚通…

阿里通义万相2.1模型在亚马逊云科技ECS容器中的私有化部署

本文将主要介绍同义万相v2.1视频生成模型的在AWS上部署的初步测试 通义万相AI模型介绍 通义万相模型是阿里云负责大规模生成式模型的团队,最近发布了通义万相2.1(以下称Wan 2.1),这是一个“全面开源的视频基础模型套件,突破了视频生成的边界…

PyTorch 损失函数解惑:为什么 nn.CrossEntropyLoss 和 nn.BCELoss 的公式看起来一样?

PyTorch 损失函数解惑:为什么 nn.CrossEntropyLoss 和 nn.BCELoss 的公式看起来一样? 在使用 PyTorch 时,我们经常会用到 nn.CrossEntropyLoss(交叉熵损失)和 nn.BCELoss / nn.BCEWithLogitsLoss(二元交叉…

题目 3216 ⭐团建⭐【DFS】蓝桥杯2024年第十五届省赛

小蓝正在和朋友们团建,有一个游戏项目需要两人合作,两个人分别拿到一棵大小为 n 和 m 的树,树上的每个结点上有一个正整数权值 c 1 , c 2 , ⋅ ⋅ ⋅ , c n c_1, c_2, , c_n c1​,c2​,⋅⋅⋅,cn​, d 1 , d 2 , ⋅ ⋅ ⋅ , d m d_1, d_…