You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
TypeScript
45 lines
1.0 KiB
TypeScript
9 months ago
|
// In components/TabsComponent.tsx
|
||
|
import React from 'react';
|
||
|
import { Tabs, Tab } from 'nextra/components';
|
||
|
|
||
|
interface TabInfo {
|
||
|
model: string;
|
||
|
max_tokens: number;
|
||
|
messages: Array<{ role: string; content: string }>;
|
||
|
}
|
||
|
|
||
|
interface TabsComponentProps {
|
||
|
tabsData: TabInfo[];
|
||
|
}
|
||
|
|
||
|
const TabsComponent: React.FC<TabsComponentProps> = ({ tabsData }) => {
|
||
|
const renderCodeBlock = (tab: TabInfo) => {
|
||
|
return `
|
||
|
from openai import OpenAI
|
||
|
client = OpenAI()
|
||
|
|
||
|
response = client.chat.completions.create(
|
||
|
model="${tab.model}",
|
||
|
messages=${JSON.stringify(tab.messages, null, 4)},
|
||
|
temperature=1,
|
||
|
max_tokens=${tab.max_tokens},
|
||
|
top_p=1,
|
||
|
frequency_penalty=0,
|
||
|
presence_penalty=0
|
||
|
)
|
||
|
`;
|
||
|
};
|
||
|
|
||
|
return (
|
||
|
<Tabs items={tabsData.map(tab => tab.model)}>
|
||
|
{tabsData.map((tab, index) => (
|
||
|
<Tab key={index}>
|
||
|
<pre><code data-language="python">{renderCodeBlock(tab)}</code></pre>
|
||
|
</Tab>
|
||
|
))}
|
||
|
</Tabs>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
export default TabsComponent;
|