理解自我反思的简单代码(代理设计模式)

理解自我反思的简单代码(代理设计模式)

反思/自我反思有点被低估了。如果您的应用程序依赖于提示,我强烈建议您探索这个概念。实施起来并不难,反思技术可以帮助迭代地完善 llm 响应。

from mirascope.core import BaseMessageParam, ResponseModelConfigDict, openaifrom pydantic import BaseModelimport osos.environ["OPENAI_API_KEY"] = ""class Review(BaseModel):    issues: list[str]    is_good: bool    model_config = ResponseModelConfigDict(strict=True)class Story(BaseModel):    story: str    model_config = ResponseModelConfigDict(strict=True)class StoryWriter(BaseModel):    keywords: list[str]    generator_history: list[openai.OpenAIMessageParam] = []    @openai.call(        "gpt-4o-mini",        response_model=Story,        json_mode=True,        call_params={"temperature": 0.8},    )    def generator(self, query: str) -> list[openai.OpenAIMessageParam]:        return [            BaseMessageParam(                role="system",                content="You are an expert in writing short moral stories for kids below the age of 10.",            ),            *self.generator_history,        ]    @openai.call(        "gpt-4o-mini",        response_model=Review,        json_mode=True,        call_params={"temperature": 0.1},    )    def reviewer(self, story: str) -> list[openai.OpenAIMessageParam]:        return [            BaseMessageParam(                role="system",                content="You are an expert in reviewing short moral stories for kids below the age of 10, checking whether all the keywords were used effectively and identifying issues related to relevance and ease of understanding",            ),            BaseMessageParam(                role="user",                content=f""" Review the given moral story for kids. Check if the story uses all the given keywords. Also check if the story is reasonably realistic, engaging and uses basic vocabulary that is easy to understand for kids below the age of 10. Return the issues. Finally, return True if the moral story is good enough for kids and contains all the keywords. n story: {story} n keywords: {self.keywords}""",            ),        ]    def run(self, steps=3) -> str:        query = f"""Generate a moral story for kids, using all the given keywords. Return only the story. {self.keywords}"""        self.generator_history += [            BaseMessageParam(role="user", content=query),        ]        story = ""        for _ in range(steps):            generator_response = self.generator(query)            story = generator_response.story            reviewer_response = self.reviewer(story)            if reviewer_response.is_good:                break            query = f"""Use the given feedback to improve the story. Return only the story."""            self.generator_history += [                BaseMessageParam(role="assistant", content=generator_response.story),                BaseMessageParam(                    role="user",                    content=" ".join(reviewer_response.issues) + " " + query,                ),            ]        print(self.generator_history)        return storystory = StoryWriter(    keywords=[        "elephant",        "boy",        "strong",        "funny",        "good",        "ride",        "Nikolas",        "road",        "cap",        "car",    ]).run()print("==================")print("result", story)

以上就是理解自我反思的简单代码(代理设计模式)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 18:35:49
下一篇 2025年12月13日 18:35:58

相关推荐

  • Python 初学者指南:快速教程 – 2

    python 是最流行的编程语言之一,以其简单性和多功能性而闻名。无论您是编程新手还是希望为您的项目选择 python,本教程都将指导您完成基础知识。 1.什么是python? python 是一种高级解释型编程语言,强调可读性和效率。它广泛应用于网页开发、数据分析、人工智能、科学计算等领域。 2.…

    2025年12月13日
    000
  • 为您的 Python 项目设置 Conda 环境 – 1

    使用 conda 和requirements.txt 设置 python 项目 在处理 python 项目时,创建隔离的环境来管理依赖关系并避免冲突至关重要。本指南将帮助您安装 anaconda、解决常见问题并为您的项目设置虚拟环境。 1.安装 anaconda(在根终端) a) 按照本指南安装 a…

    2025年12月13日
    000
  • python做爬虫 怎么样效率最高

    高效爬虫使用 Python 的优化策略:并行化处理:使用多线程或多进程同时处理多个请求,并利用 asyncio 或 Tornado 实现非阻塞 I/O。缓存请求:存储爬取结果以避免重复爬取。限制请求速率:使用速率限制器控制爬取频率,避免触发网站反爬机制。针对性爬取:使用正则表达式或 CSS 选择器只…

    2025年12月13日
    000
  • python爬虫怎么爬取动态页面

    Python 爬取动态页面的方法包括:Selenium:用于自动化 Web 浏览器,适合复杂的动态页面。Splash:基于 Chromium headless browser,通过 JavaScript API 处理动态页面。Puppeteer:无头 Chrome 浏览器,提供强大 API 控制浏览…

    2025年12月13日
    000
  • python爬虫怎么模拟点击

    要使用 Python 爬虫模拟点击,可以使用以下方法:使用 Selenium,找到要点击的元素并执行 click 方法。使用 Headless 浏览器,如 Puppeteer 或 Playwright,使用 JavaScript 或 Python 代码控制无头浏览器,并执行点击操作。 如何使用 Py…

    2025年12月13日
    000
  • 给一个关键词用python怎么爬虫

    使用 Python 进行网络爬虫步骤:安装 beautifulsoup4、requests 和 lxml 库。发送 HTTP GET 请求到目标 URL。解析 HTML 响应并提取数据。处理并存储提取的数据。 使用 Python 进行网络爬虫 网络爬虫是一种自动化程序,用于从互联网上提取数据。它通过…

    2025年12月13日
    000
  • python爬虫怎么处理弹窗

    Python 爬虫可以采用多种方法处理弹窗:模态弹窗(覆盖整个浏览器窗口):使用 Selenium 或 PyAutoGUI 找到并关闭弹窗。非模态弹窗(不阻止页面交互):等待弹窗加载,使用 Selenium 或 PyAutoGUI 查找并关闭弹窗。 Python 爬虫如何处理弹窗 在使用 Pytho…

    2025年12月13日
    000
  • 使用 LlamaChat 和 Excel 构建一个简单的聊天机器人]

    在这篇文章中,我将解释如何使用 llama2 模型构建一个聊天机器人来智能查询 excel 数据。 我们正在建设什么 加载 excel 文件。将数据分割成可管理的块。将数据存储在矢量数据库中以便快速检索。使用本地 llama2 模型来回答基于 excel 文件的内容。 先决条件: python (≥…

    2025年12月13日
    000
  • DSPy:语言模型编程的新方法

    挑战:超越传统提示 在使用语言模型 (llm) 时,开发人员面临着一系列常见的挑战。我们花费了无数的时间来制作完美的提示,却发现当我们切换模型或输入略有变化时,我们精心设计的解决方案就会崩溃。传统的即时工程方法是手动的、耗时的,而且通常是不可预测的。 解决方案:斯坦福大学的 dspy 框架 dspy…

    2025年12月13日
    000
  • 释放 AI 的全部潜力:Claudie AI Agent 如何转变工作流程

    在时间是终极资源的世界中​​,自动化已成为成功的关键。想象一下,拥有一个虚拟助手,它不仅了解您的需求,而且与您一起发展。这就是 Claudie AI Agent 的承诺——一个旨在优化工作流程、提高生产力并改变我们与技术交互方式的智能系统。 什么是克劳迪人工智能代理? Claudie AI Agen…

    2025年12月13日
    000
  • 如何构建您自己的 Google NotebookLM

    随着音频内容消费的日益普及,将文档或书面内容转换为真实音频格式的能力最近已成为趋势。 虽然 google 的 notebooklm 在这个领域引起了人们的关注,但我想探索使用现代云服务构建一个类似的系统。在本文中,我将向您介绍如何创建一个可扩展的云原生系统,该系统使用 fastapi、firebas…

    2025年12月13日
    000
  • 学习Python

    介绍 python 是世界上最流行的编程语言之一,这是有充分理由的。 简单性、多功能性和大量应用而闻名,python已成为初学者和专家的首选。无论您是想深入网络开发、数据科学、机器学习还是自动化,python 都能为每个人提供帮助。不过,学习 python 比我想象的要简单。数据类型包括字符串、布尔…

    2025年12月13日
    000
  • Python 基础知识:为您的编程之旅奠定基础

    python 是一种令人兴奋的语言,可用于 web 开发、自动化、数据分析和人工智能。然而,在深入研究这些高级主题之前,有必要了解核心基础知识。这些基础知识构成了 python 编程的基础,将使您成为一名自信的开发人员。让我们以一种易于理解且实用的方式来分解这些关键概念。 1. python 语法和…

    2025年12月13日
    000
  • 最大限度地提高 FastAPI 效率:使用 py-cachify 极快地实现缓存和锁定

    在快节奏的 web 开发世界中,性能至关重要。高效的缓存机制可以通过减少冗余计算和数据库查询来显着增强 api 的响应能力。在本文中,我们将探讨如何使用 sqlmodel 和 redis 将 py-cachify 库集成到 fastapi 应用程序中,以实现缓存和并发控制。 目录: 简介项目设置使用…

    2025年12月13日
    000
  • TeamStation AI 如何评估、验证和审查顶级 Python 开发人员

    了解 TeamStation AI 用于识别拉丁美洲最优秀的 Python 开发人员的细致流程,确保您凭借顶级人才取得业务成功。 简介:对卓越 Python 人才的需求 在当今快节奏的科技世界中,雇用顶级 Python 开发人员不仅仅是一种奢侈,而是一种必需品。从人工智能驱动的应用程序到可扩展的 W…

    2025年12月13日
    000
  • python爬虫怎么mysql

    使用 Python 爬虫将数据保存到 MySQL方法:安装 pymysql 库。连接到 MySQL 数据库。创建游标。准备 SQL 插入语句。绑定数据并执行 SQL 语句。提交更改。关闭连接。 如何使用 Python 爬虫将数据保存到 MySQL? 方法: 1. 安装必要的库 安装 pymysql …

    2025年12月13日
    000
  • Python 隐藏的超能力:掌握编码魔法的元对象协议

    python 的元对象协议 (mop) 是一项强大的功能,可让我们调整该语言的核心工作方式。这就像进入后台了解 python 的内部运作一样。让我们探索这个迷人的世界,看看如何让 python 随心所欲。 mop 的核心就是自定义对象的行为方式。我们可以改变它们的创建方式、访问属性的方式,甚至方法的…

    2025年12月13日
    000
  • 在人工智能工具的帮助下构建状态机库

    出于无聊,在等待后续面试时,我构建了一个由 genruler 提供支持的状态机库。准确地说,是我毕业后第一份工作期间建造的。这个实现大致是基于我的主管当时起草的设计。该项目还旨在展示如何利用规则 dsl。 根据谷歌搜索有限状态机返回的有用摘要(强调我的) “有限状态机”是指一种计算模型,其中系统在任…

    2025年12月13日
    000
  • 只需几步即可将拥抱脸部模型部署到 AWS Lambda

    是否曾经想将 hugging face 模型部署到 aws lambda,但却被容器构建、冷启动和模型缓存所困扰?以下是如何使用 scaffoldly 在 5 分钟内完成此操作。 长话短说 在 aws 中创建名为 .cache 的 efs 文件系统: 转到 aws efs 控制台点击“创建文件系统”…

    2025年12月13日
    000
  • 迈向轻松的 Python 配置文件版本 2

    介绍 在上一篇文章中,我们成功创建了一个模拟属性数据类来管理应用程序的配置值。 然而,它基本上只是一个模板,我们必须为每次使用重新实现。 在我的工作的版本 2 中,我成功地实现了一个可重用的类。 它需要一对属性定义上的装饰器。 另外,该实现需要一个sections 数据类型,其中包含每个配置节的se…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信