
反思/自我反思有点被低估了。如果您的应用程序依赖于提示,我强烈建议您探索这个概念。实施起来并不难,反思技术可以帮助迭代地完善 llm 响应。
西安网上购物网店系统的主要亮点:(1)商品的分类更加细化和明朗,可以三级分类,价格可以多层次\多级别,按照后台设置的,吸引会员加入。(2)会员和非会员购物并存,订单直接支付和会员帐户支付并存,电话支付与网上支付多种支付方式。(3)自定义商品扩展属性,多种扩展属性定义模式,强大的商品管理功能,多重分类功能(4)灵活的会员积分系统,灵活的会员权限控制,模版丰富多彩,模版代码分离,方便修改模版(5)支付
from mirascope.core import BaseMessageParam, ResponseModelConfigDict, openai
from pydantic import BaseModel
import os
os.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 story
story = StoryWriter(
keywords=[
"elephant",
"boy",
"strong",
"funny",
"good",
"ride",
"Nikolas",
"road",
"cap",
"car",
]
).run()
print("==================")
print("result", story)









