当前位置: 首页 > wzjs >正文

网站套模版品牌策划公司

网站套模版,品牌策划公司,抖音小姐姐做我女朋友网站,安卓手机做网站服务器吗什么是langgraph ? 是一个由于构建有状态的多参与者应用程序的库,理由LLM构建代理和多代理流程。其核心优势:循环性、可控性和持久性。LangGraph 允许自定义循环流程。 langGraph 的主要功能 循环和分支: 在应用中实现循环和条件语句 持久…

什么是langgraph ?

是一个由于构建有状态的多参与者应用程序的库,理由LLM构建代理和多代理流程。其核心优势:循环性、可控性和持久性。LangGraph 允许自定义循环流程。

langGraph 的主要功能

循环和分支: 在应用中实现循环和条件语句
持久性:在图中的每个步骤之后自动保持状态。在任何时候暂停和恢复图以支持错误。
人机交互:在中断图执行已批准或编辑代理的计划的下一个动作。
流支持:在每个节点产生输出时流式传输输出(包换令牌流式传输)

LangGraph 的组成部分

LangGraph SDK (API客户端)、LangGraph Cli、LangGraph Studio (用户界面/调试器)。

LangGraph 的核心是将代理工作流建模为图。你可以使用是三个关键的组件来定义代理行为
1:状态:一个共享的数据结构表示程序应用的当前快照,他可以是python的任何类型但一般是dict
2:节点: 代码逻辑的python 函数。接收当前状态作为输入执行一些计算,并返回一个更新的状态(图的状态inactive、active)。
3:遍 python函数,根据当前状态确定要执行的下一个节点。

简单代码示例

from typing import Literal, Annotated
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, START, END
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
#from langchain_core.pydantic_v1 import BaseModel, Field
from pydantic.v1 import BaseModel, Field
import re# ================== 状态类定义 ==================
class AgentState(BaseModel):messages: Annotated[list, Field(default_factory=list)]next_agent: Literal["researcher", "calculator", "writer", "done"] = "researcher"step_count: int = 0def __getitem__(self, key):return getattr(self, key)def get(self, key, default=None):return getattr(self, key, default)# ================== 消息转换函数 ==================
def convert_messages(raw_messages):return [msg if not isinstance(msg, dict) else {"user": HumanMessage,"system": SystemMessage,"assistant": AIMessage}[msg["role"]](content=msg["content"])for msg in raw_messages]# ================== 模型配置 ==================
model = ChatOpenAI(openai_api_base="http://localhost:23333/v1",model_name="qwen_chat",openai_api_key="EMPTY",max_tokens=150,temperature=0.2
)# ================== 核心函数:create_agent ==================
def create_agent(role: str, prompt: str):"""通用Agent创建函数"""def agent(state: AgentState):current_state = AgentState(**state) if isinstance(state, dict) else statemessages = convert_messages(current_state.messages)messages.append(SystemMessage(content=f"{prompt}\n请用'建议下一步:选项'格式结尾(选项只能是researcher/calculator/writer/done)"))try:response = model.invoke(messages)print(f"[{role}输出] {response.content}")# 解析下一步建议next_agent = "done"if match := re.search(r'建议下一步:\s*(\w+)', response.content, re.IGNORECASE):suggestion = match.group(1).lower()if suggestion in {"researcher", "calculator", "writer", "done"}:next_agent = suggestionreturn AgentState(**{"messages": messages + [response],"next_agent": next_agent,"step_count": current_state.step_count + 1})except Exception as e:print(f"[{role}错误] {str(e)}")return AgentState(**{"messages": current_state.messages,"next_agent": "done","step_count": current_state.step_count + 1})return agent# ================== Supervisor节点 ==================
def supervisor(state: AgentState):current_state = AgentState(**state) if isinstance(state, dict) else stateprint(f"\n[Supervisor] 当前步数: {current_state.step_count}")if current_state.step_count >= 10:return AgentState(**{"messages": current_state.messages,"next_agent": "done","step_count": current_state.step_count + 1})messages = convert_messages(current_state.messages)control_prompt = '''请严格选择并直接回复以下选项(仅单词):
researcher - 需要进一步研究
calculator - 需要数学计算
writer - 生成最终报告
done - 结束流程'''messages.append(SystemMessage(content=control_prompt))try:response = model.invoke(messages)raw_output = response.content.strip().lower()print(f"[Supervisor决策] 原始输出: {raw_output}")# 增强解析逻辑if "writer" in raw_output:next_agent = "writer"elif "calculator" in raw_output:next_agent = "calculator"elif "researcher" in raw_output:next_agent = "researcher"else:next_agent = "done"return AgentState(**{"messages": current_state.messages,"next_agent": next_agent,"step_count": current_state.step_count + 1})except Exception as e:print(f"[Supervisor错误] {str(e)}")return AgentState(**{"messages": current_state.messages,"next_agent": "done","step_count": current_state.step_count + 1})# ================== 初始化各Agent ==================
researcher_agent = create_agent("研究员", "分析GDP趋势")
calculator_agent = create_agent("计算器", "执行增长率计算")
writer_agent = create_agent("作家", "生成最终报告(完成后必须添加[END]标识)")# ================== 工作流配置 ==================
builder = StateGraph(AgentState)builder.add_node("supervisor", supervisor)
builder.add_node("researcher", researcher_agent)
builder.add_node("calculator", calculator_agent)
builder.add_node("writer", writer_agent)builder.add_conditional_edges("supervisor",lambda state: state.next_agent,{"researcher": "researcher","calculator": "calculator","writer": "writer","done": END}
)for agent in ["researcher", "calculator", "writer"]:builder.add_edge(agent, "supervisor")builder.set_entry_point("supervisor")
workflow = builder.compile()# ================== 执行测试 ==================
if __name__ == "__main__":test_input = AgentState(messages=[{"role": "user", "content": "成都市GDP增长率分析"}])try:for step in workflow.stream(test_input):node_name = list(step.keys())[0]state = step[node_name]print(f"\n[系统状态] 当前节点: {node_name}")print(f"[状态] next_agent: {state.get('next_agent')}")print(f"[状态] step_count: {state.get('step_count')}")if node_name == "__end__":print("\n====== 流程正常终止 ======")if state.messages:print("最终报告:")print(state.messages[-1].content)breakexcept Exception as e:print(f"\n!!! 流程异常终止: {str(e)}")
http://www.dtcms.com/wzjs/113403.html

相关文章:

  • 网站开发实验室建设方案微信crm系统软件
  • 公司网站怎么注销营销知识和技巧
  • 做网站遇到的问题温州seo团队
  • 返利网站开发一般要多少钱友链查询站长工具
  • 温州网站制作网站广告网站大全
  • wordpress如何二次开发电商seo搜索引擎优化
  • 深圳市住房和建设局办事大厅黑帽seo365t技术
  • 学seo可以做网站吗百度一下官网首页网址
  • 上海网站建设免费推宁波seo博客
  • 比较好的做网站百度网盘登录入口官网
  • wordpress seo 标题网站搜索排名优化价格
  • 青海省建设厅网站seo培训学院
  • 网站建设评语百度权重查询
  • 遵义网站建设有限公司如何推销产品给客户
  • 网站建设主要课程投放广告怎么投放
  • 北京龙鼎网站建设公司济南seo优化公司助力网站腾飞
  • 企业网站开发公司排名企业网络策划
  • 如何进行网站网站调试手游推广渠道
  • h5营销型网站文章优化关键词排名
  • 欧式风格装修效果图免费的seo网站
  • 网站收录申请b站推广入口
  • 做陶瓷的公司网站百度助手下载
  • 网站开发多少钱现在有哪些免费推广平台
  • 用scala做网站类似58的推广平台有哪些平台
  • 怎样下载做网站的软件哈尔滨seo
  • 网站版权备案在线子域名二级域名查询工具
  • 天津做淘宝网站网络营销师证书查询
  • 做网站软件 手机大数据下的精准营销
  • 可以自己买服务器做网站吗百度手机网页
  • 建设工程评标专家在哪个网站登录购物链接