网站数据库模版怎样给一个公司做网站改版
- 作者: 五速梦信息网
- 时间: 2026年06月19日 07:31
当前位置: 首页 > news >正文
网站数据库模版,怎样给一个公司做网站改版,标书制作员工资很低吗,极客 wordpressnote
LlamaIndex 实现 Agent 需要导入 ReActAgent 和 Function Tool#xff0c;循环执行#xff1a;推理、行动、观察、优化推理、重复进行。可以在 arize_phoenix 中看到 agent 的具体提示词#xff0c;工具被装换成了提示词ReActAgent 使得业务自动向代码转换成为可能循环执行推理、行动、观察、优化推理、重复进行。可以在 arize_phoenix 中看到 agent 的具体提示词工具被装换成了提示词ReActAgent 使得业务自动向代码转换成为可能只要有 API 模型就可以调用很多业务场景都适用LlamaIndex 提供了一些开源的工具实现可以到官网查看。虽然 Agent 可以实现业务功能 但是一个 Agent 不能完成所有的功能这也符合软件解耦的设计原则不同的 Agent 可以完成不同的任务各司其职Agent 之间可以进行交互、通信类似于微服务。 文章目录 note一、LlamaIndex中agent的构建二、代码实践Reference 一、LlamaIndex中agent的构建
步骤
定义工具函数大模型会根据函数的注释来判断使用哪个函数来完成任务把工具函数放入FunctionTool对象中供Agent能够使用LlamaIndex 实现 Agent 需要导入 ReActAgent 和 Function Tool ReActAgent 通过结合推理Reasoning和行动Acting来创建动态的 LLM Agent 的框架。该方法允许 LLM 模型通过在复杂环境中交替进行推理步骤和行动步骤来更有效地执行任务。ReActAgent 将推理和动作形成了闭环Agent 可以自己完成给定的任务。
一个典型的 ReActAgent 遵循以下循环
初始推理代理首先进行推理步骤以理解任务、收集相关信息并决定下一步行为。行动代理基于其推理采取行动——例如查询API、检索数据或执行命令。观察代理观察行动的结果并收集任何新的信息。优化推理利用新信息代理再次进行推理更新其理解、计划或假设。重复代理重复该循环在推理和行动之间交替直到达到满意的结论或完成任务。
二、代码实践
import os
from dotenv import load_dotenv# 加载环境变量
load_dotenv()
初始化变量
base_url None chat_model None api_key None# 使用with语句打开文件确保文件使用完毕后自动关闭 env_path /Users/guomiansheng/Desktop/LLM/llm_app/wow-agent/.env.txt with open(env_path, r) as file:# 逐行读取文件for line in file:# 移除字符串头尾的空白字符包括\nline line.strip()# 检查并解析变量if base_url in line:base_url line.split(, 1)[1].strip().strip()elif chat_model in line:chat_model line.split(, 1)[1].strip().strip()elif ZHIPU_API_KEY in line:api_key line.split(, 1)[1].strip().strip()# 打印变量以验证 print(fbase_url: {base_url}) print(fchat_model: {chat_model}) print(fZHIPU_API_KEY: {api_key})from openai import OpenAI client OpenAI(api_key api_key,base_url base_url ) print(client)def get_completion(prompt):response client.chat.completions.create(modelglm-4-flash, # 填写需要调用的模型名称messages[{role: user, content: prompt},],)return response.choices[0].message.content# 用llama-index from openai import OpenAI from pydantic import Field # 导入Field用于Pydantic模型中定义字段的元数据 from llama_index.core.llms import (CustomLLM,CompletionResponse,LLMMetadata, ) from llama_index.core.embeddings import BaseEmbedding from llama_index.core.llms.callbacks import llm_completion_callback from typing import List, Any, Generator# 定义OurLLM类继承自CustomLLM基类 class OurLLM(CustomLLM):api_key: str Field(defaultapi_key)base_url: str Field(defaultbase_url)model_name: str Field(defaultchat_model)client: OpenAI Field(defaultNone, excludeTrue) # 显式声明 client 字段def init(self, api_key: str, base_url: str, model_name: str chat_model, data: Any):super().init(data)self.api_key api_keyself.base_url base_urlself.model_name model_nameself.client OpenAI(api_keyself.api_key, base_urlself.base_url) # 使用传入的api_key和base_url初始化 client 实例propertydef metadata(self) - LLMMetadata:Get LLM metadata.return LLMMetadata(model_nameself.model_name,)llm_completion_callback()def complete(self, prompt: str, **kwargs: Any) - CompletionResponse:response self.client.chat.completions.create(modelself.model_name, messages[{role: user, content: prompt}])if hasattr(response, choices) and len(response.choices) 0:response_text response.choices[0].message.contentreturn CompletionResponse(textresponse_text)else:raise Exception(fUnexpected response format: {response})llm_completion_callback()def stream_complete(self, prompt: str, **kwargs: Any) - Generator[CompletionResponse, None, None]:response self.client.chat.completions.create(modelself.model_name,messages[{role: user, content: prompt}],streamTrue)try:for chunk in response:chunk_message chunk.choices[0].deltaif not chunk_message.content:continuecontent chunk_message.contentyield CompletionResponse(textcontent, deltacontent)except Exception as e:raise Exception(fUnexpected response format: {e})llm OurLLM(api_keyapi_key, base_urlbase_url, model_namechat_model)
print(llm)
测试模型是否能正常回答
response llm.stream_complete(你是谁)
for chunk in response:print(chunk, end, flushTrue)import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(file), .., ..)))
from llama_index.core.agent import ReActAgent
from llama_index.core.tools import FunctionTooldef multiply(a: float, b: float) - float:Multiply two numbers and returns the productreturn a * bdef add(a: float, b: float) - float:Add two numbers and returns the sumreturn a b# 定义个类似天气预报的function
def get_weather(city: str) - int:Gets the weather temperature of a specified city.Args:city (str): The name or abbreviation of the city.Returns:int: The temperature of the city. Returns 20 for NY (New York),30 for BJ (Beijing), and -1 for unknown cities.# Convert the input city to uppercase to handle case-insensitive comparisonscity city.upper()# Check if the city is New York (NY)if city NY:return 20 # Return 20°C for New York# Check if the city is Beijing (BJ)elif city BJ:return 30 # Return 30°C for Beijing# If the city is neither NY nor BJ, return -1 to indicate unknown cityelse:return -1def main():multiply_tool FunctionTool.from_defaults(fnmultiply)add_tool FunctionTool.from_defaults(fnadd)# 创建ReActAgent实例agent ReActAgent.from_tools([multiply_tool, add_tool], llmllm, verboseTrue)response agent.chat(202*4等于多少使用工具计算每一步)print(f第一个agent的结果 , response, \n)weather_tool FunctionTool.from_defaults(fnget_weather)agent ReActAgent.from_tools([multiply_tool, add_tool, weather_tool], llmllm, verboseTrue)response agent.chat(纽约天气怎么样?)print(f第二个agent的结果 , response)if name main:main()输出的结果
1计算的例子
将提问中的计算步骤分别利用了我们自定义的函数 add 和 multiply比task1只能控制prompt情况更加自由了
2天气预报的例子
可以在 arize_phoenix 中看到 agent 的具体提示词工具被装换成了提示词ReActAgent 使得业务自动向代码转换成为可能只要有 API 模型就可以调用很多业务场景都适用LlamaIndex 提供了一些开源的工具实现可以到官网查看。虽然 Agent 可以实现业务功能 但是一个 Agent 不能完成所有的功能这也符合软件解耦的设计原则不同的 Agent 可以完成不同的任务各司其职Agent 之间可以进行交互、通信类似于微服务。
Reference
[1] 官方文档https://docs.cloud.llamaindex.ai/ [2] https://github.com/datawhalechina/wow-agent [3] https://www.datawhale.cn/learn/summary/86
- 上一篇: 网站数据库好建设吗宁波百度网站建设
- 下一篇: 网站数据库特点如何在阿里巴巴上建设公司网站
相关文章
-
网站数据库好建设吗宁波百度网站建设
网站数据库好建设吗宁波百度网站建设
- 技术栈
- 2026年06月19日
-
网站数据分析视频临沂网站公众号建设
网站数据分析视频临沂网站公众号建设
- 技术栈
- 2026年06月19日
-
网站数据分析工具怎么制作美篇教程
网站数据分析工具怎么制作美篇教程
- 技术栈
- 2026年06月19日
-
网站数据库特点如何在阿里巴巴上建设公司网站
网站数据库特点如何在阿里巴巴上建设公司网站
- 技术栈
- 2026年06月19日
-
网站数据库维护都是做什么如何加强旅游电子商务网站的建设
网站数据库维护都是做什么如何加强旅游电子商务网站的建设
- 技术栈
- 2026年06月19日
-
网站数据库一般多大免费做优化的网站建设
网站数据库一般多大免费做优化的网站建设
- 技术栈
- 2026年06月19日
