248 lines
22 KiB
Plaintext
248 lines
22 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"id": "initial_id",
|
||
"metadata": {
|
||
"collapsed": true,
|
||
"ExecuteTime": {
|
||
"end_time": "2025-09-14T07:07:20.035830Z",
|
||
"start_time": "2025-09-14T07:07:18.952675Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"import os\n",
|
||
"\n",
|
||
"os.environ['DASHSCOPE_API_KEY'] = 'sk-e2a05bbcfac84e53b73f98acef15a009'\n",
|
||
"\n",
|
||
"# Step 0: Define tools and model\n",
|
||
"\n",
|
||
"from langchain_core.tools import tool\n",
|
||
"from langchain_community.chat_models.tongyi import ChatTongyi\n",
|
||
"\n",
|
||
"llm = ChatTongyi(\n",
|
||
" model=\"qwen-max\", # 此处以qwen-max为例,您可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models\n",
|
||
" streaming=True,\n",
|
||
" # other params...\n",
|
||
")"
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 1
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-09-14T07:08:19.248026Z",
|
||
"start_time": "2025-09-14T07:08:19.242281Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"from typing import Annotated, List\n",
|
||
"import operator\n",
|
||
"from pydantic import BaseModel, Field\n",
|
||
"\n",
|
||
"\n",
|
||
"# Schema for structured output to use in planning\n",
|
||
"class Section(BaseModel):\n",
|
||
" name: str = Field(\n",
|
||
" description=\"Name for this section of the report.\",\n",
|
||
" )\n",
|
||
" description: str = Field(\n",
|
||
" description=\"Brief overview of the main topics and concepts to be covered in this section.\",\n",
|
||
" )\n",
|
||
"\n",
|
||
"\n",
|
||
"class Sections(BaseModel):\n",
|
||
" sections: List[Section] = Field(\n",
|
||
" description=\"Sections of the report.\",\n",
|
||
" )\n",
|
||
"\n",
|
||
"\n",
|
||
"# Augment the LLM with schema for structured output\n",
|
||
"planner = llm.with_structured_output(Sections)"
|
||
],
|
||
"id": "b9c22b9f90a9810b",
|
||
"outputs": [],
|
||
"execution_count": 2
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-09-14T07:10:47.458182Z",
|
||
"start_time": "2025-09-14T07:10:47.448495Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"from typing import TypedDict\n",
|
||
"from IPython.core.display import Image\n",
|
||
"from langgraph.constants import START, END\n",
|
||
"from langgraph.graph import StateGraph\n",
|
||
"from langchain_core.messages import SystemMessage, HumanMessage\n",
|
||
"from langgraph.types import Send\n",
|
||
"\n",
|
||
"\n",
|
||
"# Graph state\n",
|
||
"class State(TypedDict):\n",
|
||
" topic: str # Report topic\n",
|
||
" sections: list[Section] # List of report sections\n",
|
||
" completed_sections: Annotated[\n",
|
||
" list, operator.add\n",
|
||
" ] # All workers write to this key in parallel\n",
|
||
" final_report: str # Final report\n",
|
||
"\n",
|
||
"\n",
|
||
"# Worker state\n",
|
||
"class WorkerState(TypedDict):\n",
|
||
" section: Section\n",
|
||
" completed_sections: Annotated[list, operator.add]\n",
|
||
"\n",
|
||
"\n",
|
||
"# Nodes\n",
|
||
"def orchestrator(state: State):\n",
|
||
" \"\"\"Orchestrator that generates a plan for the report\"\"\"\n",
|
||
"\n",
|
||
" # Generate queries\n",
|
||
" report_sections = planner.invoke(\n",
|
||
" [\n",
|
||
" SystemMessage(content=\"Generate a plan for the report.\"),\n",
|
||
" HumanMessage(content=f\"Here is the report topic: {state['topic']}\"),\n",
|
||
" ]\n",
|
||
" )\n",
|
||
"\n",
|
||
" return {\"sections\": report_sections.sections}\n",
|
||
"\n",
|
||
"\n",
|
||
"def llm_call(state: WorkerState):\n",
|
||
" \"\"\"Worker writes a section of the report\"\"\"\n",
|
||
"\n",
|
||
" # Generate section\n",
|
||
" section = llm.invoke(\n",
|
||
" [\n",
|
||
" SystemMessage(\n",
|
||
" content=\"Write a report section following the provided name and description. Include no preamble for each section. Use markdown formatting.\"\n",
|
||
" ),\n",
|
||
" HumanMessage(\n",
|
||
" content=f\"Here is the section name: {state['section'].name} and description: {state['section'].description}\"\n",
|
||
" ),\n",
|
||
" ]\n",
|
||
" )\n",
|
||
"\n",
|
||
" # Write the updated section to completed sections\n",
|
||
" return {\"completed_sections\": [section.content]}\n",
|
||
"\n",
|
||
"\n",
|
||
"def synthesizer(state: State):\n",
|
||
" \"\"\"Synthesize full report from sections\"\"\"\n",
|
||
"\n",
|
||
" # List of completed sections\n",
|
||
" completed_sections = state[\"completed_sections\"]\n",
|
||
"\n",
|
||
" # Format completed section to str to use as context for final sections\n",
|
||
" completed_report_sections = \"\\n\\n---\\n\\n\".join(completed_sections)\n",
|
||
"\n",
|
||
" return {\"final_report\": completed_report_sections}\n",
|
||
"\n",
|
||
"\n",
|
||
"# Conditional edge function to create llm_call workers that each write a section of the report\n",
|
||
"def assign_workers(state: State):\n",
|
||
" \"\"\"Assign a worker to each section in the plan\"\"\"\n",
|
||
"\n",
|
||
" # Kick off section writing in parallel via Send() API\n",
|
||
" return [Send(\"llm_call\", {\"section\": s}) for s in state[\"sections\"]]\n",
|
||
"\n",
|
||
"\n",
|
||
"# Build workflow\n",
|
||
"orchestrator_worker_builder = StateGraph(State)\n",
|
||
"\n",
|
||
"# Add the nodes\n",
|
||
"orchestrator_worker_builder.add_node(\"orchestrator\", orchestrator)\n",
|
||
"orchestrator_worker_builder.add_node(\"llm_call\", llm_call)\n",
|
||
"orchestrator_worker_builder.add_node(\"synthesizer\", synthesizer)\n",
|
||
"\n",
|
||
"# Add edges to connect nodes\n",
|
||
"orchestrator_worker_builder.add_edge(START, \"orchestrator\")\n",
|
||
"orchestrator_worker_builder.add_conditional_edges(\n",
|
||
" \"orchestrator\", assign_workers, [\"llm_call\"]\n",
|
||
")\n",
|
||
"orchestrator_worker_builder.add_edge(\"llm_call\", \"synthesizer\")\n",
|
||
"orchestrator_worker_builder.add_edge(\"synthesizer\", END)\n",
|
||
"\n",
|
||
"# Compile the workflow\n",
|
||
"orchestrator_worker = orchestrator_worker_builder.compile()"
|
||
],
|
||
"id": "afcc65ff28c2e69b",
|
||
"outputs": [],
|
||
"execution_count": 4
|
||
},
|
||
{
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-09-14T07:10:50.990699Z",
|
||
"start_time": "2025-09-14T07:10:50.153622Z"
|
||
}
|
||
},
|
||
"cell_type": "code",
|
||
"source": [
|
||
"\n",
|
||
"# Show the workflow\n",
|
||
"display(Image(orchestrator_worker.get_graph().draw_mermaid_png()))"
|
||
],
|
||
"id": "8b97064947c2cb7a",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<IPython.core.display.Image object>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data",
|
||
"jetTransient": {
|
||
"display_id": null
|
||
}
|
||
}
|
||
],
|
||
"execution_count": 5
|
||
},
|
||
{
|
||
"metadata": {},
|
||
"cell_type": "code",
|
||
"outputs": [],
|
||
"execution_count": null,
|
||
"source": [
|
||
"\n",
|
||
"# Invoke\n",
|
||
"state = orchestrator_worker.invoke({\"topic\": \"Create a report on LLM scaling laws\"})\n",
|
||
"\n",
|
||
"from IPython.display import Markdown\n",
|
||
"Markdown(state[\"final_report\"])"
|
||
],
|
||
"id": "c0de9dd437183722"
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 2
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython2",
|
||
"version": "2.7.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|