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

Langgraph实战--在Agent中加入人工反馈

Langgraph实战–在Agent中加入人工反馈

概述

Agent产出的内容可能和我们的期望有出入,这样就需要加入人类的判断和反馈。本文介绍通过人工review大模型的内容来继续修改内容,让内容更加符合预期。

实现逻辑

  1. 让大模型先生成一个内容初稿的博客
  2. 人工review该初稿的内容,若是发现不符合自己的预期,可以向AI提出自己的建议,让AI修改该初稿
  3. AI修改初稿后,人工再次确认,若是符合预期,直接退出循环。

实现代码

注意:这个代码实现可以进一步修改一下,让人工可以持续对流程进行修改。目前并没有实现持续修改。

import os
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, END, START
from langgraph.checkpoint.memory import MemorySaver
from langchain_openai import ChatOpenAI
from display_graph import display_graph
from dotenv import load_dotenvload_dotenv()local_llm = "Qwen/Qwen2.5-7B-Instruct"
base_url = "https://api.siliconflow.cn/v1"
SL_API_KEY = os.getenv("SL_API_KEY")llm = ChatOpenAI(model=local_llm, base_url=base_url, api_key=SL_API_KEY)# Define the state structure
class State(TypedDict):input: strdraft_content: str# Define node functions
def create_draft(state: State):print("--- 通过AI产生草稿 ---")# Prepare the prompt for generating the blog contentprompt = f"基于以下主题写一篇博客: {state['input']}"# Call the LangChain ChatOpenAI instance to generate the draftresponse = llm.invoke([{"role": "user", "content": prompt}])# Extract the generated contentstate["draft_content"] = response.contentprint(f"生成的草稿:\n{state['draft_content']}")return statedef review_draft(state: State):print("--- 正在查看草稿 ---")print(f"Draft for review:\n{state['draft_content']}")return statedef publish_content(state: State):print("--- 正在发布内容 ---")print(f"发布的内容:\n{state['draft_content']}")return state#### 构建graph
# Build the graph
builder = StateGraph(State)
builder.add_node("create_draft", create_draft)
builder.add_node("review_draft", review_draft)
builder.add_node("publish_content", publish_content)# 定义工作流
builder.add_edge(START, "create_draft")
builder.add_edge("create_draft", "review_draft")
builder.add_edge("review_draft", "publish_content")
builder.add_edge("publish_content", END)# Set up memory and breakpoints
memory = MemorySaver()
graph = builder.compile(checkpointer=memory, interrupt_before=["publish_content"])# Display the graph
display_graph(graph, file_name=os.path.basename(__file__))
# Run the graph
config = {"configurable": {"thread_id": "thread-1"}}
initial_input = {"input": "AI对现代内容创作的重要性"}# Run the first part until the review step
thread = {"configurable": {"thread_id": "1"}}
for event in graph.stream(initial_input, thread, stream_mode="values"):print(event)# 根据用户的选择来修改输出内容
user_approval = input("你是否赞同该内容? (yes/no/mod): ")if user_approval.lower() == "yes":# Proceed to publish contentfor event in graph.stream(None, thread, stream_mode="values"):print(event)
elif user_approval.lower() == "mod":# 获取用户的修改意见modification_feedback = input("请输入您的修改意见:\n")# 创建获取配置get_config = {"configurable": {"thread_id": "1","checkpoint_ns": ""        }}# 获取存储的状态checkpoint_tuple = memory.get_tuple(get_config)retrieved_content = checkpoint_tuple.checkpoint["channel_values"]["draft_content"]retrieved_metadata = checkpoint_tuple.metadata# 使用修改意见生成新的草稿prompt = f"""根据以下修改意见修改原文:原文内容: {retrieved_content}修改意见: {modification_feedback}"""# 调用 LLM 生成修改后的内容response = llm.invoke([{"role": "user", "content": prompt}])updated_draft = response.content# 展示修改后的内容print("\n修改后的内容:")print(updated_draft)# 确认修改confirm = input("\n您确认这个修改版本吗? (yes/no): ")if confirm.lower() == "yes":new_versions = {"content": "1"}checkpoint = {"id": "draft-1","channel_values": {"draft_content": updated_draft},"channel_versions": {"content": "1"}}# 更新状态memory.put(thread["configurable"]["thread_id"],metadata= retrieved_metadata,new_versions=new_versions,checkpoint=checkpoint)print("内容已更新,准备发布...")# 继续发布流程for event in graph.stream(None, thread, stream_mode="values"):print(event)else:print("已取消修改,流程终止。")
else:print("用户终止了执行.")

输出和分析

{'input': 'AI对现代内容创作的重要性'}
--- 通过AI产生草稿 ---
生成的草稿:
### AI对现代内容创作的重要性随着科技的飞速发展,人工智能(AI)正在改变几乎每一个行业。其中,AI对现代内容创作的影响尤为显著,正在重新定义创作的内容形式和生产效率。从自动生成的新闻报道、电影剧本预测,到个性化创作助手,AI已经成为内容创作者的强大辅助工具。本文将探讨AI在现代内容创作中的重要性,以及它如何重塑我们的创作方式。#### AI如何参与现代内容创作1. **自动撰写**AI能够帮助作家、记者自动撰写新闻报道、文章和博客文章。通过分析大量的文本数据,AI可以学习语言模式和风格,生成高质量的内容。它不仅节省了大量的写作时间,还能够提供独特的视角和观点。2. **创意激发**
...#### AI对内容创作的未来展望尽管AI在内容创作中的应用已经取得了显著的成果,但未来的发展前景更加广阔。随着技术的进步,AI将更加深入地融入内容创作过程,甚至可能直接参与到故事叙述、歌曲创作等更复杂高级的内容生产活动中。例如,通过生成详细的剧本,AI甚至可以帮助编剧和演员更好地理解故事情节和角色发展。#### 结语总而言之,AI正在成为现代内容创作不可或缺的一部分。它不仅能提高创作效率,还能激发创意,帮助内容创作者接触到更广泛的受众。更重要的是,随着时间的推移,AI将继续进化,有望在不久的将来为内容创作带来更大的突破。面对这一变革,内容创作者需要积极拥抱AI技术,利用其强大的功能来提升自己的创作水平,共同开创内容创作的新时代。------------------------------------------------------------------------------
--- 正在查看草稿 ---
Draft for review:
### AI对现代内容创作的重要性随着科技的飞速发展,人工智能(AI)正在改变几乎每一个行业。其中,AI对现代内容创作的影响尤为显著,正在重新定义创作的内容形式和生产效率。从自动生成的新闻报道、电影剧本预测,到个性化创作助手,AI已经成为内容创作者的强大辅助工具。本文将探讨AI在现代内容创作中的重要性,以及它如何重塑我们的创作方式。    #### AI如何参与现代内容创作1. **自动撰写**AI能够帮助作家、记者自动撰写新闻报道、文章和博客文章。通过分析大量的文本数据,AI可以学习语言模式和风格,生成高质量的内容。它不仅节省了大量的写作时间,还能够提供独特的视角和观点。2. **创意激发**AI还可以帮助创作者生成创意想法。例如,通过分析流行文化趋势和市场反馈,AI能够预测下一个流行趋势,帮助内容创作者构思新的故事线或设计理念。        
...#### AI对内容创作的未来展望尽管AI在内容创作中的应用已经取得了显著的成果,但未来的发展前景更加广阔。随着技术的进步,AI将更加深入地融入内容创作过程,甚至可能直接参与到故事叙述、歌曲创作等更复杂高级的内容生产活动中。例如,通过生成详细的剧本,AI甚至可以帮助编剧和演员更好地理解故事情节和角色发展。#### 结语总而言之,AI正在成为现代内容创作不可或缺的一部分。它不仅能提高创作效率,还能激发创意,帮助内容创作者接触到更广泛的受众。更重要的是,随着时间的推移,AI将继续进化,有望在不久的将来为内容创作带来更大的突破。面对这一变革,内容创作者需要积极拥抱AI技术,利用其强大的功能来提升自己的创作水平,共同开创内容创作的新时代。-------------------------------------------------------------------------------------------
你是否赞同该内容? (yes/no/modification): modification
请输入您的修改意见:
字数再减少一些,控制在300字左右---------------------------------------------------------------------------------------------修改后的内容:
### AI对现代内容创作的重要性随着科技的发展,AI正在重塑现代内容创作。它不仅提高了创作效率,还能激发创意,帮助创作者触及更广泛的受众。AI的应用从自动撰写文章到数据分析、翻译与本地化,正在多方面影响创作过程。#### AI如何参与现代内容创作1. **自动撰写**AI能够帮助作家和记者自动撰写新闻报道、文章和博客,通过分析大量文本数据生成高质量内容,节省写作时间并提供独特视角。2. **创意激发**AI通过分析流行文化趋势和市场反馈,帮助创作者预测下个流行趋势,构思新的故事线或设计理念。
... 
#### AI对内容创作的未来展望
随着技术进步,AI将更深入地参与内容创作,甚至帮助编剧和演员更好地理解故事和角色发展。未来,AI将进一步颠覆内容创作方式。#### 结语
AI已成为现代内容创作不可或缺的一部分,提升效率和创意。它将继续发展,为内容创作带来更大突破。内容创作者应积极拥抱AI技术,提升创作水平,共同开创新时代。
-------------------------------------------------------------------------------------
您确认这个修改版本吗? (yes/no):
已取消修改,流程终止。

从以上输出可以看到:AI可以根据用户的反馈来对生成内容进行修改。从而保证最终AI输出的内容是符合我们的预期的。

总结

通过对AI输出中加入人类的反馈已经,能够让AI更好的输出符合预期的内容。同时,通过人工的审核,可以更好的保证输出内容的安全性和准确性。

相关文章:

  • 区分viewmodel和model职责的方法
  • C++-std::async与std::future基本使用
  • 使用 CMake 管理库版本号(VERSION 和 SOVERSION)
  • Canal详解
  • 使用 XState 状态机打造英语单词学习界面(demo)
  • 对象存储Ozone EC应用和优化
  • 多电流传感器电流检测方法多电流传感器电流检测方法
  • 图片转Latex软件
  • HarmonyOS运动语音开发:如何让运动开始时的语音播报更温暖
  • 中断相关知识
  • C语言的全称:(25/6/6)
  • python模块——tqdm
  • An improved YOLACT algorithm for instance segmentation of stacking parts
  • 双面沉金PCB应用:打造卓越电子设备的黄金工艺
  • 深入浅出:计算机网络体系结构——信息世界的“交通规则”
  • C语言速成15之告别变量碎片化:C 语言结构体如何让数据管理从混乱走向有序
  • MCP协议三种传输机制全解析
  • 在线OJ项目测试
  • C++.OpenGL (7/64)摄像机(Camera)
  • 云服务器厂商机房是什么
  • 昊源建设监理有限公司网站/怎么让百度搜出自己
  • 网站怎么做用户体验/张雷明任河南省委常委
  • 832网络销售平台/seo页面排名优化
  • 减肥药可以做网站吗/百度推广登录平台app
  • 如何建设一个彩票网站/软件培训机构有哪些?哪个比较好
  • 展览公司设计费/安徽seo人员