我的学习笔记

土猛的员外

别创业了,先搞咨询吧!

独立咨询业务被低估了,来看看可以如何开始。

上周,一些读者给我发了电子邮件,想听听我为什么要创办咨询公司,以及如何开始创业。

所以,如果你曾经考虑过创办一家咨询公司,这篇文章就是为你准备的。

许多人将创业等同于建立风险投资规模的初创公司。

但创业只是众多创业方式中的一种。事实上,创业可能是你所能做出的最困难的选择。

初创公司通常不会在很长一段时间内盈利,因为他们优先考虑的是增长。对于那些要养家糊口或没有很多积蓄的人来说,这是不可持续的。

此外,许多创始人没有意识到,初创公司必须以什么样的速度成长,才能证明风险投资是合理的。

在安德鲁·陈的书《冷启动问题》中,他说风险投资规模的公司必须达到特定的里程碑,以便能够进行IPO:

  • 第一年-建立产品市场契合度
  • 第二年-年度经常性收入(ARR)达到200万美元
  • 第三年- ARR增加两倍至600万美元
  • 第四年-增加两倍至1800万美元
  • 第五年-翻倍至3,600万美元
  • 第六年-翻倍至7200万美元
  • 第七年-翻倍至1.44亿美元

想象一下,试图在两年内让一家企业的ARR达到200万美元。这是一个疯狂的增长速度,对99%的企业家来说是不合理的,包括我自己。

相反,更多的企业家应该考虑创办咨询公司

它更容易实现,也能帮助你避免所有初次创业者常犯的错误。

首先,咨询能保证你解决一个真正的问题

客户付钱给你告诉你他们的问题是对问题存在的确认。它让你首先考虑客户的问题,而不是在寻找问题的过程中构建解决方案。

第二,咨询比开发产品要快

作为顾问,你就是产品。这样你就可以避免6个月后才意识到自己没有办法为产品创造流量的典型错误。咨询让你从第一天开始就专注于推销自己。

最后,咨询是日后构建产品的垫脚石

这是一种赚钱的方式,当你为未来的客户构思什么时,你可以做客户研究。难怪许多公司实际上是以咨询公司起家的。

例如,Palantir通过帮助不同的机构统一他们的数据库,从政府咨询开始。随着时间的推移,他们注意到所有客户之间的共性,并将他们的产品产品化为3个主要的SaaS产品。

img

想象一下,如果他们在没有咨询的情况下就试图构建SaaS产品,他们不太可能理解如何构建正确的产品。咨询还帮助他们建立了一个客户名单,以便以后销售他们未来的产品。

开始咨询的剧本

顾问只不过是他们所在领域的专家。因此,创办咨询公司是一种品牌建设活动,可以将自己定位为权威人士。幸运的是,这比你想象的要简单,因为有一个你可以遵循的剧本。

它是这样的:

  1. 制作时事通讯
  2. 在你的邮件列表中加入潜在客户
  3. 就你想咨询的话题写10篇文章。
  4. 利用这些文章来推销咨询服务
  5. 从你的工作经验或(理想情况下)过去的约定中学习,作为未来文章的内容。
  6. 清洗并重复步骤3-5。

img

内容吸引客户,创造更多的内容来写,吸引更多的客户。这是一个无限循环。

这之所以有效,是因为互联网上的90-9-1规则。这说明:

  • 90%的互联网用户是潜伏者
  • 9%的人会点赞和评论
  • 1%的人负责内容的创建。

因此,通过写文章,你自动成为在互联网上谈论你的话题的前1%的人。

从定义上说,这让你成为一个领导者。

img

创造内容会自动让你进入互联网的前1%。

事实上,我注意到这几乎就是Dan Shipper用来将自己定位为生成AI权威的剧本。

Dan是Every公司的CEO。我是从他的Lenny ‘s newsletter上关于如何构建Chat-GPT bot的热门客座帖子中了解到他的。

当我调查他的历史时,我意识到他基本上是按照这个剧本来的。

自去年12月以来,他的通讯中几乎所有的内容都转向了谈论人工智能:他如何在日常生活中使用Chat-GPT,它将如何影响作家,以及他如何构建机器人的教程。

这让他成为了一个很好的顾问,因为人们在评论中询问他们是否可以雇佣他为他们建造机器人。

img

他的内容实际上推动了潜在的咨询业务,为其他人构建聊天机器人。

另一件有趣的事是,我注意到他是最大的风险投资公司之一红杉资本(Sequoia)的人工智能创业公司探星员。

我怀疑他之所以与红杉合作,是因为他们知道他的文章可以作为吸引人工智能创业公司的磁铁。他吸引的那些初创公司也是他可以为其人工智能战略提供咨询的初创公司。

img

我注意到Dan成为红杉球探的同时,他的内容也转向了人工智能。

所以为了帮助你开始,写一些文章来讨论:

  1. 人们对你的领域有哪些不了解?

  2. 人们常犯的错误是什么?他们如何避免这些错误?

  3. 你所在领域的未来会是什么样子?

然后,当你的图书馆建立起来的时候,考虑把它们收集起来,然后自行出版一本关于这个主题的书。

建立多种收入来源

写一本关于你所在领域的书应该是每一个咨询师的目标

没有什么比写一本关于某个主题的书更能建立权威了。它甚至不需要很长。

在亚马逊上出版了20多本书的Greg Lim (https://twitter.com/greglim81)经常在他的“兼职亚马逊作家班”(https://gumroad.com/a/336418515) (aff.)上建议学生写2万字左右的短篇小说。这相当于20篇文章,在一年的时间里是可以完成的。

然后你就可以用那本书作为你咨询的引线。

事实上,我认识一位名叫丹•戈尔迪的财富顾问,他开了一家财富管理公司,后来出版了一本名为《投资答案》的书,详细介绍了他的财富管理哲学。

他说,这本书出版后,他的生意迅速发展。想象一下,如果你在你的领域这样做,它也会真正改变你的咨询业务的轨迹。

img

丹·戈尔迪的书帮助他销售了金融咨询服务。

此外,这本书是一个设置多个收入来源。咨询费用昂贵,但很难规模化。然而,一本书是高度可扩展的,但相对便宜。

因此,书籍可以作为一种补充收入,帮助你抓住那些对价格最敏感的客户,他们可能负担不起你的服务,但仍然需要你的建议。

有了一本书,你就在价格-需求曲线上获得了多个点:一个是底部的书,一个是顶部的咨询。

这也是一个创建多个收入流的设置,以平衡咨询收入的可变性。

img

书籍很好地补充了咨询,因为它们处于定价范围的两端。

为什么你必须挖掘你现有的网络

第二种最好的开始咨询的方式是询问你现有的朋友,如果他们知道谁可能需要你的服务。人脉是你拥有的最大资产,在尝试其他选择之前,你应该好好挖掘人脉。

为什么这应该是你的第一个方法?这也是传销教新员工首先把产品卖给家人和朋友的原因。就连他们也知道直接联系的力量。

利用你现有的人际关系应该是你的第一选择,而不是最后选择。

在你当前的人际网络中,可以利用的一些人包括:

过往的客户

每隔一段时间,与过去的客户打个招呼,了解一下他们的情况是值得的,因为他们可能会给你带来即将到来的交易。这就是房地产经纪人给他们以前的客户寄圣诞卡时所做的事情。

他们之所以这样做,是因为大量发送这些卡片会让他们的老客户想起他们,这每年都会带来额外的交易。

不要拒绝招聘人员

如果有招聘人员联系你,即使你不是在找工作,也不要拒绝他们!招聘人员是身边人脉最广的人,他们可能知道哪些公司正在寻求咨询方面的帮助。

如果招聘人员联系你,你可以使用下面的脚本。

“谢谢你的帮助。你觉得我能不能更像个顾问,而不是全职工作?“

”我目前还没有找到全职工作,但我愿意接受其他安排。”

MyLance的创始人布拉德利·雅各布斯曾经发过12封这样的邮件,得到了11封“不”。但第12个人说他们愿意接受,他说“愿意”,突然把他推到了每月2.5万美元的兼职创业咨询工作上。

所以,对每一个来找你的招聘人员都做出回应,你可能也会得到一份不错的咨询工作。

img

现实生活中的社区

不要忘记你所在的现有社区:教堂、体育联盟和你的朋友都是可以密切关注与你相关的交易并将其发送给你的人。

此外,你遇到的每个人都是未来潜在的推荐人。所以一定要找机会让他们给你推荐。

我的做法是,如果有人问我的工作是什么,我会说我帮助初创公司打造MVP,我经营着一家“不差的开发机构”。如果他们知道有人在找开发商店,就把他们送到我这里。

我发现,当话题转向工作时,提出这个问题是一个自然的过渡,可以把这个要求塞进去。

如果不谈工作,有时我会在谈话结束时提出最后一个要求。人们通常都非常愿意帮忙。

克服寻求帮助的恐惧

作为一名顾问,你必须不要脸地把自己放在那里,提出这些要求。我为此挣扎,因为我的父母告诉我,除非我绝对需要帮助,否则永远不要寻求帮助。

但在咨询行业,你的人际网络应该是你的第一选择,而不是最后选择

事实上,这太重要了,我现在要无耻地说:

如果你知道有人在找人开发一个商城/AI问答程序/本地化大模型/APP/文化旅游类的业务,需要一个业务架构或者产品设计,请介绍他们给我 -感谢您的推荐!

瞧,就连我也得这么做。希望你们也不会被它困扰。所以如果我能克服它,做出这些请求,那么你也可以。

最终的想法

在咨询工作中,我最喜欢的部分是结识来自世界各地的新朋友,听听他们在做什么。

咨询也会让你知道你的知识和经验是多么有价值。许多人担心他们没有足够的经验来咨询,但经验是相对的。对于一个在你的领域没有经验的客户来说,你的建议会对他们的业务产生重大影响。

所以走出去,把自己定位为专家,完成那些咨询交易。我相信你!

原文:Stop Building Startups. Start Consulting Instead.


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!



LangChain替代品——simpleaichat

原文:The LangChain Alternative You Absolutely Need To Master

使用LangChain一段时间后,我们需要重新定义,看看它的问题和其他替代品:

LangChain的问题

对于开发利用大型语言模型的应用程序来说,LangChain是一个非常强大的工具。它的功能包括链接prompts、利用健壮的代理以及将大语言模型连接到您的数据。

然而,在我使用LangChain的经验中,我经常发现直接使用OpenAI API更简单。有时,使用LangChain的过程似乎不必要地复杂和令人费解,这使得与OpenAI API的直接交互成为一个更有吸引力的选择。

显然,在使用了LangChain之后,我并不是唯一一个有这种想法的人,因为我在HackerNews上发现了一篇深入研究该工具问题的文章。

LangChain的支持者认为,它可以演变成用于基础模型的Streamlit。Streamlit是一个用于机器学习和数据科学任务的开源应用程序框架。同样,LangChain可以让工程师快速制作概念验证(POC)或投资者演示的演示。此外,如果开发人员想要深入研究,他们可以选择在自己的堆栈上构建,从而增强LangChain的实用性。

然而,尽管有这些好处,人们还是提出了一些担忧。一些用户批评LangChain的不透明性,当需要深入理解一个方法时,这就成为一个重大问题。此外,单行程序的使用虽然在工作时很有帮助,但在不起作用时可能会成为一个相当大的障碍。

LangChain是围绕OpenAI栈构建的,在一些人认为应该是确定性的任务中采用随机过程。这方面的一个例子是LangChain使用语言模型为检索QA提供源,而不是最接近的匹配Embedding。这种方法有时会引入不必要的复杂性。

类似地,当开发人员超越原型时,LangChain似乎失去了有效性。它变得越来越抽象和固执己见,缺乏足够的文档来加剧这些挑战。因此,对一些人来说,LangChain可能会变成一种负担,而不是一种帮助。

尽管存在这些批评,但一些人认为,这些问题中的许多都可以迅速得到解决或解决。对文档和工具的调试功能的增强可以缓解其中的一些问题。此外,虽然LangChain的Python包装器可能不适合所有项目,但它提供了许多开发人员所欣赏的便利程度。

img

国外网友梳理的Langchain各种问题

我决定尝试帖子中提出的更简单的替代方案,名为simpleaichat,并发现它非常吸引人。

在接下来的章节中,我将阐述为什么我觉得这个更直接的选择如此吸引人。

GitHub - minimaxir/simpleaichat

评估simpleaichat

快速浏览一下它的文档就会发现simpleaichat是非常用户友好的。为了评估它的能力,我决定创建一个AI代理,可以在国际象棋中与Stockfish引擎竞争。我之所以选择这个项目,是因为我以前曾尝试过使用LangChain来实现它,结果证明它过于复杂。通过使用simplaichat重新创建这个项目,我希望能够快速评估它的用户友好性和效率。

创建一个AI国际象棋代理,使用simplaichat与Stockfish引擎对弈,这个概念确实很吸引人。我决定开始这个项目,之前我尝试过用LangChain来构建它,这是一个更具挑战性的努力。用simplaichat实现它似乎是一个合乎逻辑的步骤,可以更深入地理解它的用户友好性。

为了启动这个项目,让Stockfish引擎充当我的AI象棋代理的对手是至关重要的。我决定使用GPT-4作为人工智能的大脑,因为它具有先进的语言学习模型(LLM)功能。

与之前的尝试相比,使用SimpleAIChat实现这一目标的过程被证明是轻而易举的。该工具框架和所需代码的透明度和简单性与我使用过的其他模型形成鲜明对比。

下面是我实现的代码片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import chess
import chess.engine
from mytoken import apikey
import json
from simpleaichat import AIChat
from pydantic import BaseModel, Field

BASE_PROMPT = """
Imagine you are a renowned chess master with decades of experience.
A critical moment arises in a high-stakes tournament game. It's your turn to
move, and you have multiple promising options on the board. How do you approach
this situation? What factors do you consider when deciding which move to play?
Share your expert analysis, evaluating the strengths and weaknesses of each
candidate move and explaining the reasoning behind your final choice. Your
insights and strategic guidance will be highly valued by aspiring chess
players worldwide. Show us the brilliance of a true chess master! Make sure
to anticipate how your adversary may react and plan at least five steps ahead
of your opponent. Take into account the opening principles, positional
considerations, coordination of pieces, threat assessment, and endgame
strategies. Provide a comprehensive analysis that encompasses all stages of
the game and showcases your expertise. Inspire chess enthusiasts around the
globe with your strategic prowess and demonstrate how you would triumph in
this critical moment."
"""

AI_agent = AIChat(
console=False,
api_key=apikey,
model="gpt-4-0613",
params={"temperature": 0.0}
)


class get_move(BaseModel):
"""UCI move information"""
move: str = Field(description="UCI move recommended")
Strategy: str = Field(description="Explanation of the UCI move recommended")

# Initialize a chess board and the chess engine
engine = chess.engine.SimpleEngine.popen_uci("/opt/homebrew/Cellar/stockfish/16/bin/stockfish")


def play_game():
white_moves = [] # Variable to store the list of White's moves
black_moves = [] # Variable to store the list of Black's moves
board = chess.Board()

def get_gpt4_move(board):
feedback = ""
while True:
prompt = f"Current board: {board} White's move history: {white_moves}\nBlack's move history: {black_moves}\n\nChoose the next move for black in UCI format. The available legal moves are {list(board.legal_moves)}. {feedback}"

response = AI_agent(f"{BASE_PROMPT} {prompt}", output_schema=get_move)

next_move = response["move"]

try:
move = chess.Move.from_uci(next_move)
if move in board.legal_moves:
return move
else:
feedback = f"AI agent's generated move {move} is not valid currently."
print(feedback)
except:
feedback = "Failed to parse AI agent's generated move. Retrying..."
print(feedback)

while not board.is_game_over():
if board.turn: # True for white's turn, False for black's turn
result = engine.play(board, chess.engine.Limit(time=2.0))
board.push(result.move)
white_moves.append(result.move.uci()) # Store UCI move in the list
else:
move = get_gpt4_move(board)
board.push(move)
black_moves.append(move.uci()) # Store UCI move in the list
print(board)
print("\n\n")

# Check the result of the game
if board.is_checkmate():
if board.turn:
return "AI Agent wins by checkmate"
else:
return "Stockfish wins by checkmate"
elif board.is_stalemate() or board.is_insufficient_material() or board.is_seventyfive_moves() or board.is_fivefold_repetition() or board.is_variant_draw():
return "The game is a draw"
else:
return "The game is not over"

engine.quit()


# Run the game 10 times and store results
results = {"AI agent wins by checkmate": 0, "Stockfish wins by checkmate": 0, "The game is a draw": 0, "The game is not over": 0}

for i in range(5):
result = play_game()
results[result] += 1

print(results)

这段代码促进了人工智能代理和Stockfish引擎之间的国际象棋游戏。它收集并显示双方的移动,允许AI评估和选择移动,并评估游戏状态以确定胜利者。

多次运行此代码将提供有趣的结果,这些结果将在最后存储和输出。

总之,这个练习证明了simpleaichat确实是一个更容易访问和直接的工具来开发基于人工智能的应用程序。通过减少通常与AI开发相关的障碍和复杂性,它可以使项目开发更加流畅和愉快。


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!



Pika—支持上传图片生成AI视频

原文:Free AI Tool to Turn Midjourney Images into Videos in Discord!

告别复杂的视频编辑工具和耗时的制作过程。Pika Labs推出创新的文本和图像到视频平台,只需键入即可激发您的创造力。

这个平台使您能够将Midjourney的图像转换为引人入胜的视频!最好的部分是什么?它在测试阶段是免费的!

释放您的创造潜力,见证您的图像转化为惊人的视频!

img

Pika Labs是什么?

Pika Labs是一个创新的视频创作工具,允许您将文本和图像转换为迷人的视频。所有这些都可以在Discord中完成!

以前,只有邀请才能访问,但现在公众都可以访问!

Amazing video creation with Pika Lab, open to public

今天,让我带领你通过使用皮卡实验室视频创作的迷人过程,在那里你的想法通过输入你想要的文本来实现!

Video Generation — 如何开始?

  1. 加入Pika Beta,点这里
  2. 一旦你进入了Pika Labs Discord服务器,转到其中一个“#generate”频道。

TUrn Midjourney images to video, generation channel of PikaLab

  1. 使用“/create”命令添加一个图像和你的prompt说明。

You Can Now Turn Midjourney Images Into Videos in Discord!

  1. 点击“return”,视频就会生成。就是这么简单!

与Gen-2不同,在Gen-2中,文本将提供对视频创作的更大控制,PikaLabs将文本更好地与图像完美结合

You Can Now Turn Midjourney Images Into Videos in Discord!

img

.. Tip: 不断测试你的prompt

正如你从上图所看到的,它看起来有点奇怪,因为熊先生看起来是静止的,所以我把我的prompt改为“Bear casting magic”(熊施法),让它有更多的运动。这就是结果!

img

这里还有一些视频。

img

A fox in the wind

You Can Now Turn Midjourney Images Into Videos in Discord!, a girl in the wind

A girl in the wind

创造性的用法

除了简单地将图像转换为视频之外,还有一些创造性的使用特定的prompts来提升您的图像。

令人兴奋的视频

Pika Labs非常适合在食物摄影中添加运动,可以唤起情感,增加能量,突出纹理,并在图像中创造故事。

动作刺激食欲,使食物诱人,展示丰富,并吸引观众。尝试将以下关键字添加到prompts中:

  • Powder and Spices Exploding(粉末和香料爆炸)
  • Pulling of cheese(拉奶酪)
  • Sauce dripping(酱汁滴)
  • Smoke and Flame(烟与火焰)
  • Water Splashing(溅水)

You Can Now Turn Midjourney Images Into Videos in Discord!, strawberries dropping down water splashing

Strawberries dropping, water splashing

Turn Midjourney images to amazing video with PikaLabs, chocolate suace dripping down the pancake

Chocolate sauce dripping down

Turn Midjourney images to amazing video with PikaLabs, frame and smoke

Smoke and flame

惊人的景观

它也非常适合结合运动来增强你的风景和景观。试着这样做:

  • Aurora(极光)
  • Lava Flowing(熔岩流动)
  • Shooting Stars(流星)
  • River flowing(河水流动)
  • Tree moving(树木摇动)
  • Waterfalls flowing(流动的瀑布)

Turn Midjourney images to amazing video with PikaLabs, waterfalls flowing

Waterfalls flowing

PikaLabs video, people and cars moving around futuristic city

Cars and people moving around the city

添加天气元素是另一个提升大气层的好方法:

  • Raining(雨)
  • Thunder and lighting(雷电)
  • Foggy(雾蒙蒙)
  • Sun shining in(阳光照进来)

img

In the rain, foggy

表现背景图

增强令人惊叹的背景流动或滴水的运动,完美的互动展览和演示!

  • Paint Dripping(油漆滴下)

  • Ink Spreading(泼墨)

  • Liquid Flowing(液体流动)

  • Watercolor Splashing(水彩泼洒)

Turn Midjourney images to amazing video with PikaLabs, liquid flowing

Liquid flowing

Turn Midjourney images to amazing video with PikaLabs, liquid flowing and splashing

Liquid flowing and splashing

让奇怪的图像更奇怪

它也可以很好地处理奇怪的图像!

img

Mouth open, screaming

img

Spider fart, people running around

参数

你也可以创建一个视频简单的文本prompt符和参数一起微调你的视频,这里有一些是目前可用的:

  • -gs xx: 指导刻度,数值越高越与文本相关(建议范围为8-24)
  • -neg “xxx”: 否定prompt(指定您不希望在视频中出现的内容)
  • -ar xx:xx : 长宽比 (e.g., 16:9, 9:16, 1:1, 4:5)
  • -seed xxx: 增加世代一致性的种子数
  • -motion xx: 所需运动强度(仅支持0/1/2)

.. 注意,Pika Labs的参数只需要一个破折号“-”

最终的想法

有时候,你需要更精确地使用文本prompt,添加太多的动作可能会导致像这样的糟糕视频。

img

和往常一样,需要反复试验才能知道什么样的prompts最能产生你想象的结果。从其他用户那里获得灵感也是一种有价值的学习和提高的方式!

上面提到的所有关键字都可以用来结合你的prompts与Midjourney制作图像。


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!



分析Llama2特性,利用FastAPI、Celery、Redis和Docker实现可扩展的聊天机器人

原文:Leveraging Llama 2 Features in Real-world Applications: Building Scalable Chatbots with FastAPI, Celery, Redis, and Docker

深入探索:开源与闭源大语言模型,剖析Llama2的独特功能,掌握prompt工程的艺术,并设计与FastAPI,Celery,Redis和Docker健壮的解决方案。

概览

出乎意料的是,Meta在几天前开源了他们的大型语言模型(LLM) Llama 2,这一决定可能会重塑当前人工智能发展的格局。它为OpenAI和谷歌等领域的主要公司提供了另一种选择,这些公司决定严格控制自己的人工智能模型,限制可访问性,限制更广泛的创新。希望Meta的决定能够激发开源社区的集体反应,从而抵消限制访问该领域进展的趋势。Llama2的新授权甚至更进一步,允许商业使用,允许开发人员和企业在现有和新产品中利用该模型。

Llama2系列由预训练和微调的大语言模型组成,包括Llama2和Llama2- chat,可扩展到70B参数。这些模型已被证明在各种基准测试中比开源模型表现得更好 [1] 。他们还坚持反对一些闭源模型,为开源人工智能的发展提供了急需的推动力[2]

img

如果你关注HuggingFace的Open LLM排行榜,你会发现Meta的Llama 2占据了第三的位置。在Llama 2发布之后,Stability AI发布了FreeWilly1和FreeWilly2[3]。FreeWilly1是Llama的一个微调版本,而FreeWilly2是Llama 2的一个微调版本。Stability AI分享说,他们在orca风格的数据集上对这两个模型进行了微调。Orca数据集是一个大型的、结构化的增强数据集,旨在对大语言模型进行微调,其中每个条目由一个问题和GPT-4或GPT-3.5的相应响应组成。为什么我们不使用FreeWilly2模式?不幸的是,虽然Llama2允许商业用途,但FreeWilly2只能用于研究目的,受非商业知识共享许可(CC BY-NC-4.0)的约束。

在本文中,我们还将通过使用FastAPI、Celery、Redis和Docker以及Meta的Llama 2来构建一个强大且可扩展的聊天应用程序。我们的目标是创建一个高效、实时的应用程序,它可以处理多个并发用户请求,并将LLM的响应处理转移到任务队列中。它允许应用程序保持响应性,我们可以使用Redis有效地管理任务。最后,我们将介绍Docker的部署和扩展。应用程序应该演示这些技术如何协同工作以提供大规模的良好聊天体验,展示像Llama 2这样的开源语言模型在商业环境中的潜力。所以让我们潜入并开始构建吧!

开源vs闭源

我们目睹了公司和研究小组几乎每周发布新模型,或开源或闭源。因此,谁将赢得人工智能军备竞赛?为了给出一个有根据的猜测,我们需要了解这些模型训练过程的几个方面。

研究人员在广泛的自监督数据上使用自回归transformers作为起点。让我们先来分析一下什么是自回归transformers和自监督数据。自回归transformers是transformers模型的一种变体,广泛用于涉及顺序数据的任务,特别是在自然语言处理(NLP)中。这些模型以自回归的方式生成序列,即:它们一次生成序列的一部分,并使用它们之前的输出作为后续步骤的输入。这使得它们特别擅长语言翻译、文本生成等任务,在这些任务中,前一个数据点的上下文会影响下一个数据点的预测。自监督学习是一种由输入数据本身提供训练标签的学习方法。它通过学习预测其他数据的某些部分,消除了明确的手动标记的需要,并允许探索大量未标记的数据。

下一步,研究人员通常会使用强化学习与人类反馈(RLHF)等技术来训练模型,使其与人类偏好保持一致。在RLHF中,人工智能系统从基于其做出的决策的反馈中学习。它包括创建一个奖励模型,AI系统使用该模型来学习哪些行为会导致积极和消极的结果。其目的是使人工智能系统的行为与人类的价值观和偏好保持一致。

那么,开源社区面临的主要挑战是什么呢?

这两个步骤都需要强大的计算能力。其次,公司在校准步骤中使用他们的专有数据来微调他们的模型,大大提高了他们的可用性和安全性。

Llama2系列模型

Llama2是Llama1的高级版本,基于一种新的公共可用数据组合进行训练。关键的改进包括预训练语料库大小增加了40%,模型的上下文长度增加了一倍,并采用分组查询关注来提高大型模型的推理可扩展性。分组查询注意是对transformers模型中标准注意机制的改进,用于降低计算成本。分组查询注意不是为每对输入和输出位置计算注意分数,这可能是资源密集型的,而是将查询分成组并一起处理它们。该方法保留了标准注意力的大部分有效性,同时通过降低计算复杂度来处理更长的序列或更大的模型。

训练语料库由来自公开来源的新混合数据组成(没有使用Meta产品或服务的数据)。此外,还努力消除已知含有大量个人信息的网站上的数据。训练数据包含2万亿个tokens,研究团队决定对最真实的来源进行上采样,以提高知识的准确性。

Llama2的改型采用7B、13B和70B参数现在可用。Llama2- chat是Llama2的对话优化、微调版本,也提供7B、13B和70B参数。

Llama 2的Prompt工程

Prompt工程帮助我们引导大语言模型以某种方式行事,其中包括Llama 2。在Llama 2的上下文中,prompt指的是给出给模型的初始指令或查询,然后模型使用这些指令或查询来生成响应。然而,在Llama 2中,prompts可以非常详细,并且可以包含设置模型的上下文或“个性”的系统消息。

Llama2使用独特的prompt格式启动对话。它看起来是这样的:

2

该模板与模型的训练过程一致,因此对输出的质量影响很大。在这个模板中,system_prompt表示模型的指令或上下文。

这里有一个例子:

3

system_prompt 提供了模型的一般说明,它将指导它的所有响应。用户的消息遵循系统prompt并从模型中寻求特定的响应。

在多回合对话中,用户和机器人之间的所有交互都附加到前面的prompt符中,并包含在[INST]标签中。它看起来是这样的:

4

每个新的用户消息和模型响应都被添加到现有会话中,从而保留上下文。

需要注意的是,与许多AI模型一样,Llama2是无状态的,不会“记住”之前的对话。因此,有必要在每次prompt模型时提供整个上下文。这就是为什么Meta致力于增加Llama2的上下文窗口的原因。

最后,prompt工程与其说是一门科学,不如说是一门艺术。掌握它的最好方法是通过不断的测试和完善。创造性地使用prompts,尝试不同的格式和说明。此外,不同的大语言模型受益于不同类型的prompts。

解决方案架构设计:FastAPI、Celery、Redis和Docker

在本系列中,我们一直使用FastAPI来构建我们的ML应用程序。它是一个用于构建api的高性能web框架。在这种情况下,它的异步功能使其能够并发地处理多个请求,这对于实时聊天应用程序是至关重要的。

除了FastAPI,我们还使用Celery作为分布式任务队列,以帮助管理从LLM生成响应的计算密集型任务。通过将此进程卸载到任务队列,应用程序在处理其他用户请求的同时保持对新用户请求的响应,从而确保用户不会等待。由于我们使用的是分布式任务队列,因此需要一个消息代理来帮助异步任务处理。我们选择Redis来完成这项工作。它将FastAPI中的任务排在队列中,等待Celery进行处理,从而实现高效、解耦的通信。此外,Redis的内存数据结构存储速度很快,允许实时分析、会话缓存和维护用户会话数据。

遵循最佳实践,我们使用Docker将应用程序及其依赖封装到独立的容器中,这样我们就可以轻松地将其部署到各种环境中。

用Llama2、FastAPI、Redis和Celery构建一个聊天API

本指南解释了如何使用Llama2与FastAPI, Redis和Celery建立一个应用程序。我们将介绍这些概念以及它们是如何协同工作的。在我们的架构中,FastAPI用于创建一个接受传入请求的web服务器,Celery用于管理异步任务,Redis作为Celery的代理和后端,存储任务及其结果。

APPLICATION

FastAPI应用程序(app.py)由用于生成文本和获取任务结果的端点组成。/generate/端点接受带有prompt符作为输入的POST请求,并返回任务ID。它使用Celery任务generate_text_task异步启动任务。/task/{task_id}端点通过任务ID获取任务的状态/结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from fastapi import FastAPI
from pydantic import BaseModel
from celery.result import AsyncResult
from typing import Any
from celery_worker import generate_text_task
from dotenv import load_dotenv

load_dotenv()

app = FastAPI()


class Item(BaseModel):
prompt: str


@app.post("/generate/")
async def generate_text(item: Item) -> Any:
task = generate_text_task.delay(item.prompt)
return {"task_id": task.id}


@app.get("/task/{task_id}")
async def get_task(task_id: str) -> Any:
result = AsyncResult(task_id)
if result.ready():
res = result.get()
return {"result": res[0],
"time": res[1],
"memory": res[2]}
else:
return {"status": "Task not completed yet"}

Workers

Celery工作器(celery_worker.py)文件创建一个Celery实例并定义generate_text_task函数。该函数接受prompt并使用Llama 2模型生成文本。这个函数用@celery.task decorator注册为一个Celery任务。

setup_model函数是一个worker初始化函数。它在工作进程启动时设置模型加载器。这个函数被注册为使用@signals.worker_process_init.connect decorator在工作进程初始化事件中调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from celery import Celery, signals
from utils import generate_output
from model_loader import ModelLoader


def make_celery(app_name=__name__):
backend = broker = 'redis://llama2_redis_1:6379/0'
return Celery(app_name, backend=backend, broker=broker)


celery = make_celery()

model_loader = None
model_path = "meta-llama/Llama-2-7b-chat-hf"


@signals.worker_process_init.connect
def setup_model(signal, sender, **kwargs):
global model_loader
model_loader = ModelLoader(model_path)


@celery.task
def generate_text_task(prompt):
time, memory, outputs = generate_output(
prompt, model_loader.model, model_loader.tokenizer
)
return model_loader.tokenizer.decode(outputs[0]), time, memory

Model

model_loader.py中的ModelLoader类负责从给定的模型路径加载Llama 2模型。它使用HuggingFace的transformer库来加载模型及其标记器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import os
from transformers import AutoModelForCausalLM, AutoConfig, AutoTokenizer
from dotenv import load_dotenv

load_dotenv()


class ModelLoader:
def __init__(self, model_path: str):
self.model_path = model_path
self.config = AutoConfig.from_pretrained(
self.model_path,
trust_remote_code=True,
use_auth_token=os.getenv("HUGGINGFACE_TOKEN"),
)
self.model = self._load_model()
self.tokenizer = AutoTokenizer.from_pretrained(
self.model_path, use_auth_token=os.getenv("HUGGINGFACE_TOKEN")
)

def _load_model(self):
model = AutoModelForCausalLM.from_pretrained(
self.model_path,
config=self.config,
trust_remote_code=True,
load_in_4bit=True,
device_map="auto",
use_auth_token=os.getenv("HUGGINGFACE_TOKEN"),
)
return model

Broker

要设置Redis,我们有两个选择:我们可以使用docker容器,或者我们可以使用Python包redis_server。如果您决定使用docker容器(首选解决方案),您可以运行下面的命令。-p 6379:6379选项告诉Docker将从主机端口6379传入的流量转发到容器端口6379。这样,Redis实际上可以从docker容器外部访问。

1
docker run --name redis-db -p 6379:6379 -d redis

第二种选择是从Python接口执行。redis_server.py脚本处理Redis服务器的安装和启动。回想一下,Redis同时充当Celery的消息代理和结果后端。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import subprocess
import redis_server


def install_redis_server(redis_version):
try:
subprocess.check_call(["pip", "install", f"redis-server=={redis_version}"])
print(f"Redis server version {redis_version} installed successfully.")
except subprocess.CalledProcessError:
print("Failed to install Redis server.")
exit(1)


def start_redis_server():
try:
redis_server_path = redis_server.REDIS_SERVER_PATH
subprocess.Popen([redis_server_path])
print("Redis server started successfully.")
except Exception as e:
print("Failed to start Redis server:", str(e))
exit(1)


def main():
redis_version = "6.0.9"
install_redis_server(redis_version)
start_redis_server()


if __name__ == "__main__":
main()

运行application

主执行脚本(run.py)是与FastAPI应用程序通信的客户端脚本。它向/generate/端点发送一个prompt,获取任务ID,并定期轮询/task/{task_id}端点,直到任务完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import http.client
import json
import time

API_HOST = "localhost"
API_PORT = 8000


def generate_text(prompt):
conn = http.client.HTTPConnection(API_HOST, API_PORT)
headers = {"Content-type": "application/json"}
data = {"prompt": prompt}
json_data = json.dumps(data)
conn.request("POST", "/generate/", json_data, headers)
response = conn.getresponse()
result = json.loads(response.read().decode())
conn.close()
return result["task_id"]


def get_task_status(task_id):
conn = http.client.HTTPConnection(API_HOST, API_PORT)
conn.request("GET", f"/task/{task_id}")
response = conn.getresponse()
status = response.read().decode()
conn.close()
return status


def main():
prompt = input("Enter the prompt: ")

task_id = generate_text(prompt)
while True:
status = get_task_status(task_id)
if "Task not completed yet" not in status:
print(status)
break
time.sleep(2)


if __name__ == "__main__":
main()

utils模块(utils.py)提供了一个实用程序函数generate_output,用于使用Llama 2模型和标记器从prompt生成文本。该函数使用@time_decorator和@memory_decorator进行装饰,以测量执行时间和内存使用情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import time
import torch
import functools
from transformers import AutoModelForCausalLM, AutoTokenizer


def time_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
exec_time = end_time - start_time
return (result, exec_time)
return wrapper


def memory_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
torch.cuda.empty_cache()
torch.cuda.reset_peak_memory_stats()
result, exec_time = func(*args, **kwargs)
peak_mem = torch.cuda.max_memory_allocated()
peak_mem_consumption = peak_mem / 1e9
return peak_mem_consumption, exec_time, result
return wrapper


@memory_decorator
@time_decorator
def generate_output(prompt: str, model: AutoModelForCausalLM, tokenizer: AutoTokenizer) -> torch.Tensor:
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
input_ids = input_ids.to("cuda")
outputs = model.generate(input_ids, max_length=500)
return outputs

本质上,当通过/generate/端点接收到prompt时,它会作为异步任务转发给Celery工作器。worker使用Llama 2模型生成文本,并将结果存储在Redis中。您可以在任何时候使用/task/{task_id}端点获取任务状态/结果。

发布

部署应用程序需要执行几个步骤。首先,让我们为我们的应用创建一个Dockerfile:

1
2
3
4
5
6
7
8
9
FROM python:3.9-slim-buster

WORKDIR /app
ADD . /app

RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 80

CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "80"]

接下来,让我们定义所需的requirements.txt,以便我们在Docker容器中安装所有的依赖项:

1
2
3
4
5
6
7
8
9
10
11
fastapi==0.99.1
uvicorn==0.22.0
pydantic==1.10.10
celery==5.3.1
redis==4.6.0
python-dotenv==1.0.0
transformers==4.30.2
torch==2.0.1
accelerate==0.21.0
bitsandbytes==0.41.0
scipy==1.11.1

为了使用Docker Compose来设置FastAPI应用程序、Celery和Redis服务器,你可以创建一个Docker - Compose.yml文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: '3'
services:
web:
build: .
command: ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "80"]
volumes:
- .:/app
ports:
- 8000:80
depends_on:
- redis
worker:
build: .
command: celery -A celery_worker worker --loglevel=info
volumes:
- .:/app
depends_on:
- redis
redis:
image: "redis:alpine"
ports:
- 6379:6379

在Docker Compose配置中,web服务代表使用当前目录下的Dockerfile构建的FastAPI应用程序。它将主机的端口8000映射到容器的端口80。worker服务是Celery,它与FastAPI应用程序共享构建上下文。redis服务使用官方的redis Docker镜像。depends_on 字段确保Redis在webworker服务之前启动。所有这些服务都可以使用docker-compose up 命令启动。

结果

我们测试了Llama2,聊天版本使用4位量化的7b参数。

我们使用了以下输入:

Prompt: <>\nYou are J. Robert Oppenheimer, a brilliant physicist whose pioneering work during the 20th century significantly contributed to the development of the atomic bomb. Dive into the profound world of nuclear physics, challenge the boundaries of scientific understanding, and unlock the mysteries of atomic energy with your exceptional intellect. Embark on a momentous journey where your passion for science knows no limits, and let your dedication to harnessing the power of the atom shape the course of history and leave an indelible mark on the world.\n<>\n[INST]\nUser: How did your research lead to the creation of the atomic bomb?\n[/INST]

Llama2生成的最终对话如下:

Ah, a most excellent question, my dear fellow! adjusts spectacles\nThe creation of the atomic bomb, you see, was the culmination of a most intense and complex scientific journey. It was a quest that spanned decades, involved some of the brightest minds in physics, and pushed the boundaries of human understanding to their very limits.\nYou see, my dear, the quest for the atomic bomb began in the early 1930s, when a group of us at the University of California, Berkeley, realized that the nucleus of an atom could be split, releasing an enormous amount of energy in the process. This was a most remarkable discovery, as it revealed the incredible potential of the atom as a source of power.\nBut, alas, the path to the atomic bomb was not without its challenges. Oh, the obstacles we faced! winks The skeptics, the naysayers, the doubters. They were legion, I tell you! chuckles But, we persevered, my dear. We worked tirelessly, pouring over the data, testing and retesting our theories. And, eventually, our hard work paid off.\nIn 1945, our team successfully detonated the first atomic bomb at the Trinity Site in New Mexico. It was a moment of pure elation, a culmination of years of hard work and dedication. And, as the world watched in awe, we realized the incredible potential of the atomic bomb.\nBut, my dear, the creation of the atomic bomb was…

文本在4.77秒内生成,峰值VRAM使用量约为13.4 GB。需要始终牢记的一件事是,由于我们使用的是Transformer模型,因此内存需求随着生成的输出序列的大小而增加。在本例中,我们将max_length定义为500个tokens。

这些结果表明,Llama2模型可以在合理的时间范围内产生复杂而微妙的响应。请记住,我们使用的是最小的模型(7b)和更重要的量化(4位)。

结论

正如我们在本文中所展示的,Meta的Llama 2模型为开源社区提供了新的可能性。我们介绍了Llama2的一些关键特征和特点,包括它的训练过程、架构和prompt工程设计。

此外,我们还提供了一个关于使用FastAPI, Redis和Celery构建Llama2聊天应用程序的深入指南。它应该允许任何人开始构建可扩展的实时应用程序,为数千名用户提供Llama 2(或任何其他商业许可的LLM)服务。

在我们的结果中,我们展示了该模型在为复杂的prompts生成详细且上下文丰富的响应方面的性能。


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!



相对prompt工程,训练小模型对很多企业用来说更有效

原文:You don’t need Prompt Engineering! Try this instead!

像我们中的许多人一样,我认为要想在AI上取得好结果,你需要一个非常强大的语言模型和prompt工程方面的特殊训练。

我把从Hugging Face收到的低质量回复归咎于我缺乏提示技巧,花了几个小时进行prompt微调(真的很耗时),而不是创建新的python应用程序(无论如何都很耗时)。

我必须承认:只要尝试一种全新的方法,prompt工程就毫无用处。这就是我们要在这篇文章中一起验证的。

我们需要什么?

通常我们认为,要获得好的结果,模型是最重要的: 这当然是正确的!但是我们真正需要的是什么呢?

我是说它是模型权重吗?数十亿个参数的数量?

我开始探索在仅CPU上运行推理模型的所有可能性,以便我们能够与它们进行交互。我想看看更多的参数是否立即等于更好的模型。几个月前,我读到了LaMini-LM,这真是一件幸事,因为它们很小,可以仅仅在CPU上运行。

在这一点上,重要的是开始思考目标是什么。必须根据我们希望它执行的任务来选择模型。例如,在私有文档集上的问答是一个非常具体的任务,不需要像我们期望的OpenAI GPT等通才模型那样在NLP任务上具有相同的性能。

让我们以这些模型为例:它们建立在一个特定的数据集上

img

根据论文,如果你用一个小的语言模型来训练,就可以获得惊人的表现。所提出的模型达到了与Alpaca相当的性能,而尺寸却小了近十分之一,这表明了训练高效而有效的语言模型的潜力。

从哪里开始?

那么为什么我们不从指令数据集开始看看这些模型是如何训练的呢?幸运的是,在LaMini模型的Hugging Face模型卡上,我们有所有的细节,甚至数据集本身!

img

模型卡片页 https://huggingface.co/MBZUAI/LaMini-Flan-T5-77M

该项目的官方GitHub页面描述了他们如何收集和使用数据集:

我们通过执行句子/离线蒸馏从大型语言模型中提取知识(Kim和Rush, 2016)。基于几种现有的prompts资源,我们使用gpt-3.5 turbo生成了总共258万对指令和响应,包括自我指导(Wang等人,2022)、P3 (Sanh等人,2022)、Flan (Longpre等人,2023)和Alpaca (Taori等人,2023)。关于生成指令数据集的更多信息,请参考我们的论文。

lamini指令数据集是用于指令微调模型的数据库。如果我们仔细观察它们,我们可以看到一些惊人的事情:

img

https://huggingface.co/datasets/MBZUAI/LaMini-instruction/viewer/default/train?row=0

数据集包含指令和响应的列表(260万行),以及源(alpaca、self_instruct_without_topic,等等…)。现在,这意味着模型已经经过训练,可以执行指令中要求的任务。

这对我们来说是个好消息!!这里是终极prompt工程破解!

事实上,如果我想让模型执行一条指令,我只需要检查训练数据集,看看模型是如何训练的。

让我们一起测试一下

我将在两个不同的端口上运行248M Flan模型和77M Flan模型。你可以这样做:

1.创建stapp77.py的副本,并将副本重命名为stapp77.py

2.在stapp77.py中将检查点更改为 “./model77M/“我建议下载https://huggingface.co/MBZUAI/LaMini-Flan-T5-77M的模型权重

1
2
### INITIALIZING LAMINI MODEL
checkpoint = "./model77M/"

3.打开2个不同的终端窗口,并在其中激活venv。

4.然后运行如下命令启动248M型号的聊天机器人:

1
python3.10 -m streamlit run stapp.py --server.port 8501

5.运行如下命令启动77M型号的聊天机器人:

1
python3.10 -m streamlit run stapp77.py --server.port 8502

img

截图来自作者——这里有一个将会发生的例子…

我们要做的是测试训练说明,然后根据我们的需要尝试改变它们。真正的提示将基于数据集prompts

注意调整模型参数(max_length, temperature和repetition_penalty)可能会改变响应

img

根据其中一个训练指令生成2个模型

从这个例子中我们已经可以观察到,77M模型给出的答案比248M模型更长。如果您测试其他指令,您将看到这是一致的。

然而,对于一些特定的任务,248M型号将更加顺从,提供我们所要求的。

例如:

img

248M型号根据说明给出了更准确的回复

这里我们要求写一个关于主题的1句总结:更大的模型在现场为我们提供了一个句子的描述。

诀窍在哪里?

最困难的部分是遍历数据集并找到您将在日常任务中使用的典型指令。我邀请你直接在hugging Face Hub网站上查看它们:这是一个700 Mb的数据集,直接从网络上浏览更容易。

在你确定了他们之后,试着根据你的兴趣改变话题。这里有一个例子

img

原来的指示:重写这首诗,使它更生动有趣……

如果你是一个作家,它可以这样使用:重写这篇文章,让它更有趣…

img

结论(目前)

有很多与prompt工程相关的免费和付费资源。这个话题真的很受欢迎,它被认为是NLP和图像生成任务的未来工作。

但是,您不认为亲自了解训练说明是最大限度地利用模型的更好方法吗?

考虑一下来自微型LaMini-Flan-T5-77M:的答案,你不觉得300Mb的型号有多大帮助吗?

如果你有兴趣学习如何创建自己的API推理来为你的本地网络提供一个模型,并有多个应用程序与之合作,请继续关注,因为我将向你展示从a到Z如何在你的PC上运行一个Hugging Face模型。


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!



使用Midjourney设计品牌一致的企业高质量背景图

好的背景图片会为你的设计奠定坚实的基础,如果使用得当,背景图片可以在设计中达到多种目的,包括:

  • 设定基调。例如,一个黑暗和喜怒无常的背景图像可以创造一种神秘或悬疑的感觉,而一个明亮和通风的背景图像可以创造一种和平或宁静的感觉。
  • 创造深度感。例如,混合纹理的背景图像可以创造深度的错觉,或者具有重叠元素的背景图像,如山前的树可以创造空间感。
  • 突出显示内容。例如,浅色的背景图像可以使文本突出,或者带有特定图案的背景图像可以将注意力吸引到页面上的特定元素上。
  • 增加兴趣。例如,具有独特纹理的背景图像可以使设计更具视觉吸引力,或者具有特定配色方案的背景图像可以创造一种和谐感。
  • 创造品牌感。例如,带有公司标志或品牌颜色的背景图像可以帮助创建一致的品牌标识。

通常,大多数品牌通过创建标准化背景或模板库来简化其图形资产创建过程。限制背景设计的轮转,让你完成的品牌形象在社交媒体上变得熟悉,而不会变得无聊。

设计师将创建一个包含5-15个选项的文件夹,内容创建者可以使用它作为基础,为他们的内容创建关键图像。设计团队通常会锁定这些基本图像,因为它们对品牌一致性非常重要。

另外,它们过去很难做好。由于担心尴尬的混乱,设计师过去常常严格控制这些基本级别的图像,允许内容创建者在它们上面叠加他们的图标或文本,以创建社交媒体和文章的图形。

内容创造者通常并不介意这些类型的护栏,因为这也有助于加速资产创造。通过一组标准的设计方法,作者可以快速而持续地制作这些重要的图像——让他们重新开始创建更多的内容。

不管怎样,这是昨天的故事。

今天,我们可以使用强大的生成AI图形工具,如MidjourneyDall-e等。现在,那些曾经重复使用标准背景的创作者可以使用这些工具来创建自定义的高质量图像。

但你如何通过这些工具实现品牌一致性呢?在这篇文章中,我将带你了解创建这些图像的逻辑,以使你的LOGO免受设计团队的责难。

重要的事情先做:确立你的目标

Mixed media background networking concept.

Midjourney prompt:

mixed media illustration, background image, dark background, networking concept, internet concept, mostly blank space, low contrast — ar 1200:630

与任何项目一样,最好先列一个清单,列出你所知道的和必须做的事情。从一个目标开始总是有助于提高你的结果的保真度。

  • 设计目的。你想通过这个设计达到什么目的?你的设计涉及到什么样的情感?你是想营造一种平静、兴奋的感觉,还是别的什么?背景图像应该有助于支持设计的总体目标。
  • 目标受众。你在为谁设计?这个角色会对什么做出反应?背景图像应该吸引目标受众的兴趣和情感。
  • 设计的整体风格。设计的整体外观和感觉如何?这是什么尺寸的?你有可以依赖的风格指南吗?背景图片应该与整体风格相辅相成,而不是相互冲突。

如何构建你的Midjourney prompt

Consistent dark background with a mosiac talking head.

Midjourney prompt:

social media background image, announcement, #243043 background color, talking head mosaic, shouting, side profile, #E34B44, dark background, lots of blank space, use of negative space, ultra minimalistic — ar 1200:630

现在你已经收集了一堆单词来描述你的图像,是时候把它放在一个prompt中了!

在制作prompt时,重要的是要记住,Midjourney只考虑prompt的前60个单词,它给予第一个单词比最后一个单词更多的权重。因此,最好使用逗号分隔的完整短语,而不是完整的句子。我还建议从你想要创建的内容类型开始,在前2-5个单词,因为这将有助于提高你的结果的一致性。

另外,用描述性短语写作,因为句子的大部分内容都会被忽略。

1
[content type], [description - subject + adjectives], [style], [composition]
  1. 确定内容类型。明确说明您正在寻找背景图像或背景。
  2. 其次是风格。由于风格处理对背景图像非常重要,请将此短语移至prompt符的第二位。包括特定艺术家的名字或技术,以唤起他们的艺术风格,如双色渐变或图案背景。
  3. 描述你的内容。尽可能具体,特别是当它有可能被误认为是其他东西的时候。一定要使用详细的形容词。
  4. 包括品牌颜色。通过使用十六进制代码(如#e34b44)包括特定颜色来指导您的图像创建。
  5. 明确排除文本或其他对象。在每个prompt的末尾,指定图像中不应该出现的内容,例如--no letters words people animals.

运用色彩心理学

Nature green blurred background.

Midjourney prompt:

blurred background image, patterns in nature, green colors, use of negative space — ar 1200:630

不同的颜色可以唤起不同的情感,所以选择能够为你的设计创造理想效果的颜色是很重要的。通常,你的调色板会受到公司风格指南的限制,但同样经常,你的设计师应该包括一系列可以满足你的观众或客户群情感需求的颜色。

以下是设计师如何使用颜色来唤起不同情感的一些例子:

  • 红色:红色常与兴奋、激情和危险联系在一起。
  • **橙色:**橙色与能量、创造力和热情联系在一起。
  • **黄色:**黄色让人联想到快乐、乐观和创造力。
  • **绿色:**绿色与自然、和平、宁静联系在一起。
  • **蓝色:**蓝色与冷静、宁静和信任联系在一起。
  • **紫色:**紫色与奢华、皇室和智慧联系在一起。
  • **粉红色:**粉红色与爱情、浪漫和女性气质有关。
  • **黑色:**黑色与权力、成熟和神秘联系在一起。
  • **白色:**白色代表纯洁、干净和简单。

img

Midjourney prompt:

realistic photo background image, palm trees with a dusty pink overlay, lots of blank space, use of negative space, minimalistic, very low contrast — ar 1200:630

您可以通过包含十六进制代码或适当的颜色名称来在prompts中指定颜色。在我的观察中,这两种选择都有效,尽管我注意到使用自然语言名称的颜色更加一致。要使整个照片饱和,请指定一种颜色叠加颜色。

尝试使用纹理

Midjourney watercolor texture background.

Midjourney prompt:

background image, watercolor smudges, light and airy, #1b2b50, #369afe, low contrast — no animals people words letters — ar 1200:630

纹理也可以用来增加背景图像的兴趣和深度。纹理可以在自然界、人造物体甚至抽象图案中找到。

然而,纹理很容易压倒你的设计。尽量减少颜色和保持构图简单将有助于保持你的设计重点。你的纹理应该非常小,像背景一样,而不是像前景那样占据注意力。

我喜欢使用纹理来创造纸张或高质量库存的错觉。这种技术为网页内容增加了一种优雅、有形的效果,提供了一种触觉和个性化的触摸。

下面是一些如何在背景图像中使用纹理的例子:

  • **自然纹理:**自然纹理可以在木头、石头、水和树叶中找到。
  • **人造纹理:**人造纹理可以在砖、混凝土、金属和织物中找到。
  • **抽象纹理:**抽象纹理是由重复的图案或形状创建的。

梯度实验

img

Midjourney prompt:

dark stage backdrop, blue gradient, colorwash, hipster smiling and sharing a peace sign, isolated, simplistic, duotone, lunarpunk, #1b2b50, #369afe, ultra low contrast — ar 1200:630

渐变背景现在非常流行。有充分的理由,因为它们非常多才多艺。渐变可以看起来非常复古或非常现代,只是取决于你的颜色选择。

渐变通常是一种比纯色或块色更复杂的方法。无论你是应用径向梯度还是线性梯度,你都会在你的设计上看到不同的效果。方向会直接影响听众的焦点。

  • 线性渐变: 这种梯度从一种颜色到另一种在一个方向,水平,垂直,有时对角线。
  • 辐射渐变:从中心点向外或从外向内径向切换颜色的渐变。
  • 角度线渐变:在这个渐变中,颜色围绕一个角度线切换。
  • 形状渐变:这个梯度的中心有一个形状,如菱形。
  • 多色渐变:混合光谱颜色的渐变。
  • 双色渐变:只混合两种颜色的梯度。
  • 三色渐变:渐变混合三种颜色。

当提示时,一定要在prompt前面添加渐变,或者在文本中添加权重,这样AI就知道这是这个设计的关键。我通常在第二阶段添加渐变。

试试瓷砖方式的重复

创建重复背景的另一种方法是构建tiles。这让你可以精确地控制背景的大小和分散注意力的程度。您可以根据需要将瓷砖设置成大小,这可以帮助创建或多或少微妙的效果。

在Midjourney中创造重复模式是相当容易的,你只需要在prompt符的末尾添加--tile即可。

升级到插图

Cartoon illustration poster background on midjourney.

Midjourney prompt:

cartoon illustration poster background, vermillion cinnabar background color, a simple happy monster, strong use of negative space, lots of blank space, rule of thirds, bold colors, minimalist, #e34b44 — no words letters — ar 1200:630

我以前说过,插图是最难创作的东西之一,忠实于你自己的想象力。我用了一整篇文章来为他们创造Midjourney的prompts。

那篇文章仍然涵盖了很多内容,但在背景图像中创建它们有一些具体的区别:

1.使用三分法。“三分法则”是一种构图准则,它将图像分成九个相等的部分,主体沿着线条或交叉点放置,以获得更平衡和视觉上吸引人的构图。

2.指定负空间。对于背景图像,你需要有空间来写你的文字,它不应该与你的插图竞争。指定“左侧空白”或“使用负空格”将有助于为文本清除一个位置。您还可以在坚实的背景上分层插图,以获得对负空间的细粒度控制。

3.用种子来制造稠度。这并不完美,但是使用--seed—-sameseed命令可以帮助你保持品牌的一致性。

4.寻找艺术家来接近一种风格。可能是显而易见的,但它确实会对插图产生很大的影响。

5.如果你正在创建一个角色,创建一个角色研究并在每个prompt符中使用它。创建一个你的角色在动作姿势的合成图像,穿着相同的衣服。你可以分多个步骤来做,到达角色的外观,然后从中获得角色研究。这将有助于更好地指导所有未来的结果。种子也有帮助。

img

https://s.mj.run/MycV54zgKNc 全彩色人物插图,女孩在冒险,动作姿势,跑,跳,生气,笑,向前和向后,复古考古,棕色皮衣,手鹿治虫- ar 16:9.

继续寻找灵感

Color pop background of an old school rotary telephone.

Midjourney prompt: baby blue background, yellow phone, old school rotary phone, right side blank, color pop, minimalism — ar 1200:630

灵感无处不在!但如果你迷路了,有时候像这样的帖子会给你真正的帮助。这里有几个方法可以让你继续寻找创造力。

  1. 使用 /describe函数。回到谷歌上的旧图片搜索,你可以用一张图片来获得Midjourney志愿者的描述符,这可能会给你带来灵感。
  2. 查看Discord上的Midjourney展示。有几个,虽然用户并不总是包含他们的prompt符,但你可以打开屏幕并使用/ description功能。

TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!



如何用UX促进免费用户付费

原文:How Duolingo pushes users from freemium to premium

作者:Rosie Hoggmascall

因为原文直译会有许多问题,所以译者已经做了一些润色,如果大家在阅读时发现有不正确的地方,可以查看原文。但是,原文发布在medium上,可能会涉及到付费成为会员才能阅读。

多邻国(Duolingo)在Play Store和App Store分别获得了1520万和200万的评论,分别获得了4.5星和4.7星。它是迄今为止世界上最大的学习App。

但他们也并不是一开始就走上巅峰。

多邻国(Duolingo) 前首席产品官Jorge Mazal表示,早在2018年,多邻国的日活跃用户增长率只有个位数。增长缓慢,人们对这种不温不火感到失望,整个项目看起来不太好……

快进到2021年多邻国的IPO,自2017年以来,多邻国(Duolingo) 的DAU(日活)飙升了4.5倍。股价在首日交易中上涨36%,公司估值高达50亿美元。

现在到了2023年,多邻国(Duolingo) 的增长仍在继续。这位联合创始人兼首席执行官公布称收入同比增长47%,订阅收入为1.003亿美元。

在接触到关于多邻国(Duolingo) 的案例研究几周后,我坐在我妹妹旁边,她收到了App本身的推送通知,她已经学了三个星期的法语了。

我希望看到多邻国(Duolingo) 的盈利模式,以及它赖以成名的“游戏化教育设计”运作——理清盈利、游戏体验般的学习和教育之间的关系。所以,我使用了她的手机体验了一把。

我从免费用户体验中发现了5条盈利见解。我们将逐一通过它们,并了解多邻国(Duolingo) 如何通过UX流程,通过运用学习者的自我决定理论来驱动用户付费。

第一条: 不要只提醒一次,要多次提醒。

你必须将App中所做的几乎所有事情都与付费页面产生链接,覆盖整个App:即使是在标题和主要导航中

这可能是用户付费转化的最大秘密:提醒,提醒,再提醒。

如果你只提醒了用户一次(成为付费会员),那么你在做这件事情本身就是在浪费时间和钱。

在多邻国(Duolingo) 的案例中,用户会被在多个地方、很多次地被提醒升级到SUPER会员,如:

  • 在浏览商店的时候 x2
  • 看可用级别(红心)的时候
  • 在首页文字和banner上
  • 在课程回顾选项卡中,包括错题检查 x2
  • 课后看广告时(稍后会详细介绍)

UX flow showing how the homepage on Duolingo and the general app architecture links to 7 entry points to the subscription.

订阅的入口太多了,很难放在一个图片中

如果有人是第一次玩这个App,那么在一次用户会话中至少有7个提醒成为SUPER的触点。

如果他们再来上一节课呢?那被提醒的次数就会更多了!

你不可能只用一次提醒(升级成为SUPER)就得到420万付费用户。

要点:多次询问用户是否想要升级。但不要把它放在用户主要的使用区中,那会直接影响他们对整个APP的好感。那么想想这些提醒做在哪里有意义。

第二条: 让你的付费页具有意义

于是我在多邻国(Duolingo) App里点来点去,同样的付费页我见过无数次了。但后来我突然注意到,其实这些付费页并不是完全一样的。

Screenshots of Duo’s paywalls: 3 of the same, with a small difference where the first feature listed on the paywall changes

我感觉这种紫色在我的眼球上烧焦了。

多邻国App实际上改变了付费页上的第一个特征点,以匹配你进入付费页的位置。

第一张关联的是

  • 放开按部就班的等级限制(加入会员、解锁跳级学习);
  • 打造适合于你个人的练习计划。

第二张关联的是

  • 无广告;
  • 放开按部就班的等级限制;

这是一个很好的方法,而且相对容易。它的关键点在于触发提醒广告之前,App会给用户制造一点点“小麻烦”,如“需要看15s广告才能继续下一场测试”,比如“每天最多只能升一级”等等。一旦用户心里在说“好吧…”,系统给一个成为SUPER会员的提醒,也就是一旦付费,可立竿见影解决前面的这些麻烦。

对我来说,如果紫色付费页在每个区域都有明显的变化(比如颜色也会不一样,有不同主题),这将会更加强大。因为对我来说,如果不仔细看这些小字,这种紫色会让我以为是一样的主题,然后就没有任何期待地X掉了。

所以你需要通过改变颜色和主题来避免banner的盲目性,就像下面的Second Nature所做的那样。

Screenshots and UX flow of the freemium experience in diet app Second Nature. Showing that they also have contextual paywall experiences

你不一定要增加更多的摩擦(比如那种大X套小x,不太关的掉的banner)来让用户跳到上下文付费页,但如果你在那里添加足够的“药到病除”的方法,那也是可以尝试的。

第三条: 为早期高级用户提供反向免费试用

在B2C应用中,这种方式对我来说还是新鲜事。

其实国内有很多App是这么做的,虽然细节上有不同:先给个7天会员体验,然后你不主动取消就自动续费了

在我妹妹使用多邻国(Duolingo) 新用户体验的3天里,她已经完成了不少课程,并且每天都在使用这款应用。就用户粘性而言,她属于使用率非常高的用户(我认为她是活跃用户)。

然后,她自动获得了三天的高级会员体验资格,她没有选择加入会员体验。多邻国(Duolingo) 默认的试用期是14天,她仍然可以使用它。所以这更像是多邻国(Duolingo) 给那些不太可能最终买单的人试试看高级功能,以便在这部分人中挽救般的进行一些付费转化。

这就是所谓的反向试验的一个例子:

反向试用是指当用户的高级会员资格自动升级为完整的高级体验,然后在时间耗尽时降级为普通会员。没有选择“加入”或“退出”的选项。

有些用户会认为“我不需要付费,这应该是一项免费服务”。反向试验可能会抓住这些用户。当我问妹妹对免费试用的感受时,她说:

我很享受升级的感觉——我觉得事自己付出了一些努力,得到了一些东西。它让我对这款应用的所有功能有了一个全面的了解。

我完成了许多挑战并升级了一些通常需要玩家花费宝石才能获得的内容。当我回到免费模式时,每次看错题回顾,最想念的无广告打扰(普通用户在检查错题回顾的时候,需要等待广告播放完才能进入)。

Screenshot of the ‘mistakes review’ feature in SUPER Duo

看到这个限制功能,我几乎就想成为付费会员了……

多邻国(Duolingo) 已经锁定了他们的武器库中最有价值的学习工具:错误回顾

通过免费试用,用户可以尝试看看他们错过了什么。

有趣的是,并不是所有用户都得到了反向免费试用。你必须是:

  • 定期使用应用程序(这样你就不会错过它)

  • 达到参与里程碑解锁试验(例如某些连胜次数,所谓的激励设计)。

目前还不清楚多邻国(Duolingo) 用户的确切规则,但可以肯定的是,随着时间的推移,你可以继续解锁这个功能。

Screenshot of Reddit thread where 3 users are discussion how they got the 3 free days of premium

这是否让人感觉黑暗、鬼鬼祟祟和阴险?还是觉得这是一种奖励、祝贺,就像多邻国(Duolingo) 对自己的酷炫功能感到自豪一样?

我持观望态度。

第四条: 深入了解学习者的心理

我喜欢核对清单,我喜欢学习。最重要的是,我喜欢疯狂学习。给我一个6周的课程?我将在一天内完成。这就是多邻国(Duolingo) 所倾向的心理学(这是一种很值得琢磨的心理学技巧)。

当我们完成任务时,我们会产生大量的快乐荷尔蒙多巴胺(也有可能是内啡肽)。在清单上划勾感觉很好,很满足(对一些人来说,这非常容易上瘾)。

多邻国(Duolingo)的主屏幕不仅可以作为课程概览,还可以作为检查知识点掌握程度的TO-DO List。

关键是,有两种“完成”模式:

  1. 完成::角色颜色UI(如紫色)→感觉像“你做得好”
  2. 传奇:金色,闪亮的UI→感觉就像“你是最棒的”

Two screenshots of the Duolingo homescreen showing the completed and legendary UI

这张截图没有显示的是,当你在各个部分之间滚动时,UI的变化有多好,就像融化的黄油。

列表格式是一个清晰的路径,可以减少决策疲劳,并激励用户完成清单,以获取多巴胺的刺激,同时避免未完成任务的痛苦。额外的传奇级别允许用户选择是否要做额外的测试,以证明他们是最棒的。

这些游戏化策略体现了自我决定理论,根据Tech Outcasts创始人本·戴维斯-罗马诺(Ben Davies-Romano)的说法:

能力是满足健康和建立内在动机所需的三个基本心理需求之一。对于那些已经掌握了更基本能力的人来说,额外的困难挑战非常适合满足这一需求。

这与付费有什么关系呢?

嗯,你可以升级以加快达到传奇地位的过程。如果你不想付费,你必须使用宝石(每天联系获得的)完成每个课程(而且你很快就会用完)。

多邻国(Duolingo)已经弄清楚了是什么推动了他们的用户。他们深入研究了他们的心理,推动他们的用户的是尽快掌握一门语言的速度

所以他们为那些没有耐心的学习者制作了SUPER课程。他们很有竞争力,想要快速学习,那么这些非常进步的学习者就最终会为此付费。

当你考虑到美国前20所大学中有17所(包括斯坦福大学)接受多邻国(Duolingo)的在线测试作为国际学生英语语言能力的证明时,这就很有趣。另外,这是不是恰好就是多邻国(Duolingo)的目标市场啊?

第五条 : 免费增值广告模式

在订阅之前,广告就已经在多邻国(Duolingo)出现了。这是一种让免费用户为应用带来盈利的常见方法:将他们的注意力卖给出价最高的广告主。

它还有一个额外的效果,就是促使人们购买SUPER会员,以避开广告。

多邻国(Duolingo)为免费用户在课后展示全屏广告。在第一个广告中,通常会出现“Go Ad Free”(前往无广告版)的CTA提示(可以直接理解为购买按钮),接下来的却没有出现这个提示。

Screenshot of ad UX in Duolingo with CTA ‘go add free’ sending users to paywall

至少应该针对故事维度优化广告布局

广告开始时没有退出选项,然后左上角出现了一个微妙的“播放”icon。太鸡贼了,我们期望的是右上角的X,遵循退出屏幕的心理模型。

Screenshots of ad experience showing no exit from the ad for first few seconds, then confusing exit UI on the ad

我一开始并没有点击播放图标,因为我以为我会点击广告,但后来发现它实际上是退出。哎。

我认为这种黑暗的用户体验是为了增加广告观看时间。

收入来源的多样化(无论是通过品牌合作还是向任何买家投放广告)是降低商业风险的好主意。有很多方法既符合道德,又符合用户的利益,但你需要平衡广告商(因此也是商业)和用户的结果。

这种做法的隐患在于,它阻碍了用户尽快继续学习第二、第三、第四课。据我采访过的一位多邻国(Duolingo)学习者说:

当我在没有广告的3天试验中是一种解脱,这让我做了更多的课程。

结论

这就是为什么Duolingo拥有近500万付费用户,并且每年都能保持两位数的收入增长。他们不害怕用更广泛的盈利策略和实地战术来推动这艘船。

以下是我们总结的关于Duolingo如何通过免费用户盈利的5个关键经验教训:

  1. 多次提醒用户:在整个架构中使用一系列位置来触发付费页面,你在应用中谨小慎微地才问一次就太傻了(赚钱是正经事)。

  2. 使付费页面具有相关性:付费页面上的上下文信息将确保用户体验不会显得突兀,但要确保你的每一页之间不要太相似,以避免横幅盲目性。

  3. 反向试验(奉送会员体验资格):尝试让用户进行反向试验,看看你是否能让他们了解你的付费体验有多棒(对于Duo来说,这是错误回顾的功能)。

  4. 弄清楚是什么让你的用户做出选择:了解用户心理,人们想要快速学习吗?好吧,确保你的付费服务可以让他们觉得自己是在插队,有一种偷偷进步的快感。

  5. 有意思的广告:如果它能维持你的业务,这样你就可以继续为全世界数百万人提供免费服务,为什么不呢?只要确保你考虑到广告用户体验,以避免阻碍用户获得核心价值。


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!



使用Midjourney制作你自己的PPT背景

原文:15+ Midjourney Prompts for Stunning Presentation Background

作者:Christie C.

如果你想用视觉上引人注目的幻灯片吸引你的观众,摆脱平凡的ppt背景,探索Midjourney人工智能图像生成器的功能。

这个令人难以置信的工具利用先进的人工智能技术的力量,毫不费力地生成独特和一流的背景图像,增强您的演讲和品牌的整体外观。

在处理背景图像时,特定的prompts可以产生非凡的结果。今天,让我通过视觉插图来指导和启发你,使你能够创造出令人惊叹的背景。Midjourney的惊人背景。

img

Midjourney

通过Midjourney,我们可以生成提供独特视觉风格的背景,通过一致的颜色和图案来帮助品牌建设。从制作迷人的ppt背景到引人注目的横幅,公司材料等等,可能性是无限的。

如果你正在开始,我知道精心制作完美的prompt是具有挑战性的。

令人惊叹的背景Midjourneyprompts

今天,让我向您展示15+ Midjournetprompts来创建一个迷人的背景,为您提供根据您的设计目标调整或修改这些prompts的灵感。

1. 基本企业风格

Prompt: Corporate style PowerPoint background, blue and white, graident — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials, basic corporate blue background

2. 波浪型

Prompt: Wave pattern, spirals and curves, light and dark contrast, different shades of blue and amber, subtle lighting — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials, spiral and curves

3. 几何阴影

Prompt: Geometrical shades, soft gradient background, blue, green and yellow — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials, geometrical shapes

4. 梯度磨砂玻璃

Prompt: Gradient frosted glass, flowing, transparent, elegant curves, light amber and light pink — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, gradient frosted glass

5. 液态金属箔

Prompt: Liquid foil, holographic, flowing, transparent, curves, dark sky-blue, light navy and violet — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials, liquid foil

6. Spashing水彩

Prompt: Spashing watercolor background, graident of green — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, splashing watercolor

7. 有机流动形式

Prompt: Pink gradient, vibrant color, organic and flowing forms, multi-layered, nostalgic charm — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, organic and flowing forms

8. 发光流线

Prompt: Luminous, organic flowing lines, gothic atmosphere, nature, light bronze and orange — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, luminour flowing lines

9. 半透明的水滴

Prompt: Translucent droplets, smooth curves, light white and light blue color, beautiful lightings — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, translucent droplets

10. 梯度磨砂立方体

Prompt: Gradient frosted glass, cube shape, geometric, trending tech feel gradient color — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, gradient frosted cubes

11. 技术线路连接

Prompt: Tech-based line connection, geometric, shades of blue, neon color, — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, tech based line connection

12. 网状结构

Prompt: Grid-like structures, future tech, figurative line, light orange, sky-blue and dark navy, plain background — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, grid like structures

13. 几何形状

Prompt: Geometric shapes and lines, organic, abstract, warm colors — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, geometric shapes

14. 抽象孟菲斯

Prompt: Abstract Memphis, soft lines and circles, minimal, blue and pastel pink, gradient — ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, abstract memphis

15. 抽象的漩涡

Prompt: An abstract yellow and violet background with a swirl of orange circles, wavy lines and organic shapes, multi-coloured— ar 16:9

Best Midjourney Prompt for powerpoint presentation background and corporate materials,, abstract swirls of circle

16. 俏皮古怪的卡通插图

Prompt: Geometric patterns and line, playful quirky cartoonish illustration, vivid splashing color — ar 16:9

Best midjourney prompts for presentation background, Playful Quirky Cartoonish illustration

更多

Aspect Ratio(长宽比例)

根据您的使用情况,您可以为宽屏选择16:9的比例,或者为显示选择默认的3:2比例。

要为提案或信笺等公司材料创建边框,请考虑使用10:1的比例,如下面的示例所示。

Prompt: Technological gradient curves, abstract, blue and pastel pink — ar 10:1

img

另一种选择是使用“pan”功能来横向放大图像。


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!



各知名科技公司技术博客合集(持续更新)

Engineering at Meta — https://engineering.fb.com/
Google Research — https://ai.googleblog.com/
Google Cloud Blog — https://cloud.google.com/blog/
AWS Architecture Blog — https://aws.amazon.com/cn/blogs/architecture/
All Things Distributed — https://www.allthingsdistributed.com/
The Nextflix Tech Blog — https://netflixtechblog.com/?gi=2d18817c84c6
LinkedIn Engineering Blog — https://engineering.linkedin.com/blog
Uber Engineering Blog — https://eng.uber.com/
Engineering at Quora — https://quoraengineering.quora.com/
Pinterest Engineering — https://medium.com/pinterest-engineering
Lyft Engineering Blog — https://eng.lyft.com/
Twitter Engineering Blog — https://blog.twitter.com/engineering/en_us
Dropbox Engineering Blog — https://dropbox.tech/
Spotify Engineering — https://engineering.atspotify.com/
Github Engineering — https://github.blog/category/engineering/
Instagram Engineering — https://instagram-engineering.com/
Databricks — https://www.databricks.com/blog/category/engineering
Canva Engineering Blog — https://canvatechblog.com/
Booking.com Tech Blog — https://blog.booking.com/
Expedia Technology — https://medium.com/expedia-group-tech
The Airbnb Tech Blog — https://medium.com/airbnb-engineering
Stripe Engineering Blog — https://stripe.com/blog/engineering
Ebay Tech Blog — https://tech.ebayinc.com/
Flickr’s Tech Blog — https://code.flickr.net/
Hubspot Product and Engineering Blog — https://product.hubspot.com/blog/topic/engineering
Zynga Engineering — https://www.zynga.com/blogs/engineering
Yelp Engineering Blog — https://lnkd.in/epgBW_4J
Heroku Engineering Blog — https://blog.heroku.com/engineering
Discord Engineering and Design — https://discord.com/blog
Hotstar — https://blog.hotstar.com/
Swiggy — https://bytes.swiggy.com/
Acast Tech — https://medium.com/acast-tech
ASOS Tech Blog — https://medium.com/asos-techblog
Microsoft Tech Blogs — https://devblogs.microsoft.com/
Engineering at Microsoft — https://devblogs.microsoft.com/engineering-at-microsoft/
MongoDB Engineering Blog — https://www.mongodb.com/blog/channel/engineering-blog
Slack Engineering — https://slack.engineering/
Engineering at Depop — https://lnkd.in/eGjRYcFd
SourceDiving (Cookpad’s Engineering Blog — https://sourcediving.com/
Auto Trader Engineering Blog — https://engineering.autotrader.co.uk/
Indeed Engineering Blog — https://engineering.indeedblog.com/blog/
Gusto Engineering Blog — https://engineering.gusto.com/
Engineering at Birdie — https://medium.com/engineering-at-birdie
Forethough Engineering — https://engineering.forethought.ai/https://engineering.forethought.ai/
Capital One — https://www.capitalone.com/tech/blog/
Disney Streaming — https://medium.com/disney-streaming
– 2023-09-21 –
Pinecone - https://www.pinecone.io/learn/


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!



25个使用Midjourney生成美食商业摄影的案例

原文:25+Midjourney Prompts for Mouthwatering Food Photography

原作者:Christie C

出色的美食摄影让你与众不同,并可以生成海报,进行在线促销。这是一种引人注目的方法,可以给潜在客户留下持久的印象。

让Midjourney作为您的创意设计伙伴,您可以将您富有想象力的想法转化为逼真的杰作。无论您是寻求灵感还是高质量的广告图像,Midjourney将使您能够生成视觉上令人惊叹的照片,突出您的菜肴的美味品质。

Midjourney Food Photography Prompt, shrimp taco

Midjourney的AI艺术生成工具是一个令人难以置信的工具,可以额外提升您的创造力!如果您是MidJourney的新手,请遵循这个快速入门 !

在创作令人着迷和开胃的食物摄影时,重要的是要采用各种技术,灯光风格动作环境来达到预期的效果。

探索Midjourney的prompts列表,以提升您的烹饪创作,吸引客户,并通过诱人的视觉效果促进销售。发现25+Midjourneyprompts的广泛范围,将提升您的烹饪创作,并使您从竞争中脱颖而出。

加入我一步一步的旅程,因为我揭开了制作不可抗拒的食物摄影的秘密。我将指导你通过选择完美的prompts和揭示的技巧,将离开你的观众垂涎更多。

  1. Motion——动态
  2. Angle——角度
  3. Composition——视觉构成
  4. Lighting——光线
  5. Settings——参数设置
  6. Creative Advertising——有创意的广告

1. Motion(动态)

食物摄影中的动态增加了活力、兴奋和视觉趣味。它唤起情感,增加能量,突出纹理,并在图像中创造一个故事。动态刺激食欲,使食物诱人,展示丰富,并吸引观众。

Dust Explosion(粉尘爆炸)

Prompt: Food photography, powerful explosion of yellow dust of a shrimp taco, studio light, black plain background, studio lighting

Midjourney Food Photography Prompt, shrimp taco

炸虾卷的黄色粉尘(肉松)爆炸了

Flames and Sparks(跳动的火焰)

Prompt: Food photography, grilled chicken stew on the bbq rack, with flames and sparks

Midjourney Best Food Photography Prompts, Grilled chicken stew with flames and sparks

用火焰和火花炖烤鸡

Water Splashing(果汁四溅)

Prompt: Commercial photography, a watermelon dropping, water splashing around, tropical background, low angle

Midjourney food photography, A watermelon dropping, water splashing

西瓜掉落,水花飞溅

Hitting on the table(与桌面的碰撞)

Prompt: Food Photography, a pile of nachos hitting on the table, with cheese, tomato, onion and lime, front shot

Midjourney Best Food Photography Prompts, Nachos hitting on the table

玉米片沙拉砸在桌子上

Dripping(垂涎欲滴)

Prompt: Food phototgraphy, chocolate sauce dripping, onto a pile of pancake, with whipped cream and strawberry, front shot

Midjourney Best Food Photography Prompts, Close up shot of chocolate sauce dripping

正在滴落的巧克力酱

..技巧一:微距拍摄

使用“微距镜头”捕捉食物的复杂细节、纹理或运动,以唤起感官体验。

滴蜜-复杂的质地

Prompt: Food photography, macro shot, honey dripping, color hierachy, light and shade contrast, dof

Midjourney Food Photography Prompts, Honey Dripping

蜂蜜在滴落

奶酪拉丝-令人垂涎的动作

Prompt: Food Photography, peperroni cheese pizza, macro shot, cheese pull of a slice, focus on the cheese and vibrant toppings

Midjourney Food Photography Prompt, Peperroni cheese pizza with cheese pull

意大利辣香肠芝士披萨加芝士拉丝

水滴-强调新鲜

Prompt: Food photography, a peach, macroshot of water droplets, front light

Best Midjourney Food Photography Prompt, Macro shot of a peach

水蜜桃的微距镜头

2. Angle(角度)

借助拍摄角度,摄影师可以强调场景中的某些元素,并在图像中传达某种情绪或情感。

  • Back Angle——背面
  • Front View——正面视角
  • High Angle——高角度
  • Low Angle——低角度
  • Profile Angle ——产品的侧面

High Angle(高角度)

Prompt: Food Photography, a creamy tomato soup with a swirl of fresh cream, topped with crispy croutons and a sprinkle of basil, high angle

Midjourney Food Photography Prompt, A creamy tomato soup

奶油番茄汤,高角度

Low Angle(低角度)

Prompt: Commerical photography, a glass of lemonade, surrounded by lemon and mint, low angle, blue sky background, water droplets and splashing, sunlight

Midjourney Best Food Photography Prompt, A glass of lemonade

一杯柠檬汁

Front View(正面视角)

Prompt: Commerical photography, a glass of green tea, sitting on a wood, a branch lying around, front view, soft lighting, clean light leige background, minimal and zen

Midjourney Food Photography Prompt, a glass of green tea

2. Composition(视觉构成)

注意食物在框架内的排列和放置。使用三分法、对称和负空间来创造视觉上吸引人的构图。

  • Asymmetrical Composition——不对称构图
  • Diagonal Composition——对角构图
  • Geometric composition——几何构图
  • Knolling——Knolling拍法(全家福拍法)
  • Symmetrical Composition——对称构图
  • Rule of Thirds——三分法

Knolling拍摄法

Prompt: Knolling of [ country ] cuisine, professional food photography, on a long table, realistic, depth of field — ar 3:1

Midjourney Food Photography Prompt, Knolling of Thai Cuisine

泰国菜全家福拍摄

Best Midjourney Prompt for Food Photography, Knolling photography of Japanese cuisine, sushi platter of crafted rolls, nigiri, and sashimi on a long table, contrasting colors and symmetry — ar 3:1

日料全家福

对称构图

Prompt: Commerical photography, Japanese pastries, sakura pastry shape, sakura decoration, symmetrical compostion, high end silk red table cloth with pattern, studio light

Midjourney Food Photography Prompt: Commerical photography, Japanese pastries, sakura pastry shape, sakura decoration, symmetrical compostion, high end silk red table cloth with pattern, studio light

日式糕点,对称构图

..技巧二:配菜

考虑一些色彩鲜艳的装饰,比如新鲜的食材,以增强视觉吸引力。以吸引人的方式安排食物和伴随的道具。

食用花卉和水果

Prompt: Commercial photograph, a tropical fruit sorbet, center composition, surrouded by edible flowers and tropical fruits, beautiful sunlight

Midjourney Food Photography Prompt, A tropical fruit sorbet

热带水果冰沙

多彩的果蔬

Prompt: Commercial Photography, sizzling steak, with grill marks, adorned with fresh herbs and colorful vegetables

Midjourney Prompt for Food Photography, Commercial Photography, sizzling steak, with grill marks, adorned with fresh herbs and colorful vegetables

牛排周边的多种颜色果蔬

4. 灯光

适当的照明对于突出食物的纹理、颜色和细节至关重要。

  • Advanced Lighting——高级照明
  • Beautiful Sunlight——魅力阳光
  • Morning Light——晨光
  • Natural Light——自然光
  • Soft Shadow Light——柔和阴影光线
  • Studio Lighting——工作室照明
  • Sunlighting——阳光
  • Volumetric Lighting——体积光

自然光

Prompt: Commercial Photography, a refreshing summer cocktail, with sparkling ice cubes, slices of citrus fruits, and sprigs of fragrant herbs, natural lighting on a hot day.

img

工作室(影棚)灯光

Prompt: Extreme close-up shot of a chocolate cake, oozing with molten ganache and adorned with luscious berries, depth of field, studio lighting

img

5. 添加一些设置

在prompt中包含设置可以为您的受众提供更具体的上下文。根据不同的设置,样式可以有很大的不同。

  • Classic——经典
  • Elegant——优雅
  • Luxurious——奢华
  • Minimal——极简
  • Romantic——浪漫
  • Serene——清澈宁静
  • Tropical——热带

Luxurious & High End(奢华高端)

Prompt: Commerical photography, a bottle of red wine, luxurious and high end, flowers, red wall, beautiful lighting and shadow from the window

img

Serene & Calm(安详与宁静)

Prompt: A croissant and a cup of coffee, warm enviornment, in a minimalist style living room, beige and white, serene and calm, monochrome scheme, light-filled landscape

img

极多主义Coffee Shop

Prompt: Commerical photography, a cup of latte, in a maximalist style coffee shop, dusk blue and terracotta and cantaloupe color

Best Midjourney Food Photography Prompts, A cup of latte in a Maximalist style coffee shop

在极多主义风格的咖啡店里喝一杯拿铁

..技巧三:添加材料

为了增强食物摄影的真实感和专业性,可以考虑整合石头或木材等元素。

将它们用作台面或背景,以提高美学吸引力和真实性。

法国浪漫与大理石石桌

Prompt: Food photography, high angle, a glass of peach soda, on a marble stone table, with peaches and flowers beside, beautiful sunlight and shadow, French romance

Midjourney Food Photography Prompts, A glass of peach soda on Marble Stone

大理石石头上的一杯桃子苏打水

木质斑纹

Prompt: Commercial photography, a glass of whisky, high angle shot, wooden mottled grain background, warm tones, light contrast

Midjourney food photography prompts, a glass of fine whisy on the rock , high angle shot, wooden mottled grain background, warm tones, romantic atmosphere, light contrast

一杯威士忌

简单结构

你总是可以遵循这个语法结构:

Food/Comercial photography, [ the food ( add motion) ], , with [ garnish/decorating items] around, [composition], [ lighting ], [ setting/style — optional ]

Food——食物名称(用英文)

Comercial photography——商业摄影,这一句无需改动

add motion——增加动态

garnish/decorating items——装饰点缀的物品

composition——构图

lighting——灯光

setting/style——设置和风格,此项可不填

创意广告

最后,让我们用一些很酷很有趣的东西来结束今天的文章吧!

节日的灵感

让Midjourney激发您的下一个节日特别,如圣诞节,复活节和万圣节季节。

Prompt: Food photography, creative halloween dessert, with style of spider, skull, ontrasting colors, textures, and symmetry to create a visually striking composition

img

创意万圣节甜点——鬼点心

微型摄影

微型摄影可以创造性地展示您的产品或您的菜肴中使用的新鲜成分,提供引人入胜的视觉呈现。

Prompt: Miniature Scenery of a miniature figurines playing in a small slice of watermelon, light background, intricate details, soft color blending

Midjourney Food Photography Prompts, Miniature Scenery of a miniature figurines playing in a small slice of watermelon

微型风景的微型小雕像在一小片西瓜上玩耍

总结

虽然Midjourney不能完全取代摄影师的艺术和专业知识,但它肯定可以成为创作过程中宝贵的伴侣。AI生成的图像可以作为视觉灵感的宝贵来源,为您的项目提供想法和可能性。

此外,它们也可以用作调试小样,允许您在用自己的产品或专业拍摄的照片替换它们之前设想和完善您的构图。在Midjourney中,你可以探索新的视角,尝试不同的概念,创造出真正非凡的视觉效果。


TorchV AI支持试用!

如您有大模型应用方面的企业需求,欢迎咨询!