我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
!pip install plotly
import plotly.graph_objects as go
nodes = ["LLaMA", "Midjourney", "Microsoft Design", "ChatGPT-HTML"]
edges = [(0, 1), (1, 2), (2, 3)]
x = [0, 0.6, 1.2, 1.8]
y = [0, 0.6, 0, -0.6]
annotations = []
for edge in edges:
annotations.append(
go.layout.Annotation(
showarrow=True,
arrowsize=1,
arrowhead=1,
startarrowhead=0,
arrowwidth=2,
ax=x[edge[0]],
ay=y[edge[0]],
axref='x',
ayref='y',
x=x[edge[1]],
y=y[edge[1]],
xref='x',
yref='y'
)
)
這段程式碼的目的是建立一個節點和箭頭的圖形來描述流程,其中包括 "LLaMA" 、 "Midjourney" 、 "Microsoft Design" 和 "ChatGPT-HTML" 等節點,並以箭頭表示節點之間的關係,以下是程式碼的詳細說明:
- 節點與關係:
- nodes 定義了流程中的節點,依次為 "LLaMA" 、 "Midjourney" 、 "Microsoft Design" 和 "ChatGPT-HTML"
- edges 定義了節點之間的有向邊(箭頭),如 (0, 1) 表示從節點 0("LLaMA")指向節點 1("Midjourney")
2. 座標系統:
- x 和 y 是節點在平面座標中的位置,調整後的值確保了邊的長度適當。這些值用來繪製節點的具體位置
- "LLaMA" 位於 (0, 0)
- "Midjourney" 位於 (0.6, 0.6)
- "Microsoft Design" 位於 (1.2, 0)
- "ChatGPT-HTML" 位於 (1.8, -0.6)
3. 箭頭標註:
- 透過迴圈將 edges 中的關係轉化為箭頭標註,利用 plotly 的 go.layout.Annotation 描述每一條箭頭的樣式和位置
- showarrow=True 啟用箭頭顯示
- arrowsize, arrowhead, startarrowhead, arrowwidth 用於設定箭頭的大小、形狀和寬度
- ax, ay 是起始點的座標
- x, y 是終點的座標
- xref, yref, axref, ayref 指定這些座標參考的是何種平面
4. 輸出:
- 每個 edge 都生成一個 Annotation,加入 annotations 清單中,以便後續用於繪圖

















